Qt в VS2010 - не могу использовать объекты, созданные дизайнером - PullRequest
0 голосов
/ 26 февраля 2012

Я использую Qt с Visual Studio 2010, но у меня есть сомнения. Всякий раз, когда я использую Qt Designer для создания GUI, при компиляции в Visual у меня нет доступа к объектам, автоматически созданным дизайнером, таким как кнопки, списки и т. Д. Что я должен сделать, чтобы использовать их?

Суть в том, что я не могу создавать события, слоты, сигналы и т. Д., Потому что кажется, что эти объекты не существуют в моем main.cpp и моем mainclass.cpp.

Спасибо, ребята!

Я использую VS 2010 с QT 4.8.0.

#include <QListWidget.h>
#include <stdio.h>
#include <string.h>
#include "ui_ratagbc.h"

class dasm: QObject
{
    Q_OBJECT
public:
    dasm(void);
    ~dasm(void);
    int DAsm(FILE *,int);
private:
    Ui::RataGBCClass *ui;
};

1 Ответ

1 голос
/ 26 февраля 2012

Чтобы получить доступ к GUI в своем коде, включите результат запуска инструмента uic.Создайте класс и получите в качестве переменной-члена экземпляр класса, сгенерированный uic, он находится в пространстве имен Ui.

#include "ui_MyGUI.h" //automatically generated by uic tool

class MyClass : public QDialog //or whatever type of GUI you made
    {
    Q_OBJECT //this macro flags your class for the moc tool
    //other variables and functions
    Ui::MyGUI ui;
    };

Вы получаете доступ через этот объект 'ui': ui.label->setText("New label text set in source file");

В вашем конструкторе вызовите ui.setupUi(this)

Обратите внимание на макрос Q_OBJECT - если вы определяете сигналы и слоты или тому подобное, вам нужен Q_OBJECT, чтобы пометить класс для moc инструмент для его распознавания.

Редактировать, чтобы ответить на следующий вопрос в комментариях: Похоже, что вы хотите сделать, это использовать систему сигнал / слот.В определение вашего класса включите следующее:

class MyClass
{
//other stuff
public slots:
void customSlot(){/* your actions here */}
//other stuff
};

Затем в другом месте, обычно в конструкторе или функции инициализации, включите эту строку:

connect(ui.button, SIGNAL(clicked()), this, SLOT(customSlot()));

Дескрипторы инструмента mocосновная часть установки.Ваш пользовательский слот будет активирован при нажатии кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...