Я создал новый проект в Design Studio, и в меню «Файл» > «Экспорт проекта» я включил параметр «Включить генератор CMake». Затем я открыл проект в Qt Creator.
В Qt Creator я создал класс C++ под названием Test. В файл CMake я также добавил библиотеку QtSerialPort.
После этого я изменил main.cpp, включив в него класс Test, чтобы позже иметь к нему доступ в файлах QML. В test.cpp и test.h я добавил слот, который печатает информацию из последовательного порта.
Затем я перешел к файлам QML и нашел App.qml и Screen01.ui. qml. В документации указано, что мне не следует изменять Screen01.ui.qml, поскольку он в основном используется Design Studio, и мне следует редактировать App.qml, поскольку они связаны.
В App.qml Я хочу получить доступ к своей кнопке btn_test. При нажатии он должен активировать слот в классе Test и распечатать серийную информацию. Однако я не могу заставить это работать. Сначала я думал, что проблема в моей реализации main.cpp, поэтому я создал новую кнопку в App.qml, и она работала нормально. Однако я по-прежнему не могу получить доступ к кнопке, созданной в Design Studio, которая находится в Screen01.ui.qml.
Как я могу получить доступ к свойствам и сигналам компонентов в .ui Файлы .qml из моих файлов .qml?
Вот коды
Файл test.h
Код: Выделить всё
#ifndef TEST_H
#define TEST_H
#include
#include
#include
#include
class test : public QObject
{
Q_OBJECT
public:
explicit test(QObject *parent = nullptr);
QList microcontroller_names;
QList microcontroller_ports;
public slots:
void searchPortInfo();
signals:
};
#endif // TEST_H
Код: Выделить всё
#include "test.h"
test::test(QObject *parent)
: QObject{parent}
{}
void test::searchPortInfo()
{
microcontroller_names.clear();
microcontroller_ports.clear();
foreach (const QSerialPortInfo &port, QSerialPortInfo::availablePorts()) {
microcontroller_names.append(port.description());
microcontroller_ports.append(port.portName());
qDebug()
Подробнее здесь: [url]https://stackoverflow.com/questions/79279560/how-to-access-and-interact-with-elements-from-a-ui-qml-file-in-a-parent-qml-fi[/url]