Как получить доступ к элементам из файла .ui.qml в родительском файле .qml и взаимодействовать с ними? QT-QMLC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как получить доступ к элементам из файла .ui.qml в родительском файле .qml и взаимодействовать с ними? QT-QML

Сообщение Anonymous »

Я работал с Qt и C++ для создания настольных приложений на основе QtWidgets, но теперь хочу перейти на использование QML.
Я создал новый проект в 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
Файл test.cpp

Код: Выделить всё

#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]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»