我需要将一个 QPushButton (startListeningPushButton) 从我的 StartWindow 连接到我的 MainController 中的一个插槽。我还有几个问题:
我是否应该创建一个
Ui::startWidget ui
的指针,因为默认情况下 Qt 将它创建为一个普通变量?getStartWindow()
是从ViewController
获取StartWindow
的正确方法吗?从
StartWindow
获取startListeningPushButton
的正确方法是什么(我的 getter 正确吗)?
这是我的代码:
主 Controller .cpp:
MainController::MainController()
{
connect(m_viewController.getStartWindow()->getStartListeningPushButton, &QPushButton::clicked, this, &MainController::bla)
}
ViewController.cpp:
StartWindow* ViewController::getStartWindow()
{
return &startWindow;
}
StartWindow.cpp:
QPushButton* StartWindow::getStartListeningPushButton()
{
return ui->fStartListeningPushButton;
}
StartWindow.h:
#ifndef STARTWINDOW_H
#define STARTWINDOW_H
#include "ui_startwindow.h"
class StartWindow : public QWidget
{
Q_OBJECT
public:
StartWindow(QWidget *parent = 0);
~StartWindow();
QPushButton* getStartListeningPushButton();
private:
Ui::startWidget *ui;
};
#endif // STARTWINDOW_H
最佳答案
如果您使用的是 Qt Designer 并且 Qt IDE 生成的代码是对象而不是指针,我认为您不应该将其设为指针。
是的,返回指向 QWidget(在您的情况下为 StartWindow)的指针非常好。
- 你的 setter/getter 没问题。
似乎您在连接中输入错误,它应该如下所示:
QObject::connect(m_viewController.getStartWindow()->getStartListeningPushButton(), SIGNAL(clicked()),
this, SLOT(bla()));
关于c++ - 如何从小部件获取 ui 以便将其连接到另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34533689/