gpt4 book ai didi

c++ - 如何从小部件获取 ui 以便将其连接到另一个类?

转载 作者:行者123 更新时间:2023-11-30 03:45:46 25 4
gpt4 key购买 nike

我需要将一个 QPushButton (startListeningPushButton) 从我的 StartWindow 连接到我的 MainController 中的一个插槽。我还有几个问题:

  1. 我是否应该创建一个 Ui::startWidget ui 的指针,因为默认情况下 Qt 将它创建为一个普通变量?

  2. getStartWindow() 是从 ViewController 获取 StartWindow 的正确方法吗?

  3. 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

最佳答案

  1. 如果您使用的是 Qt Designer 并且 Qt IDE 生成的代码是对象而不是指针,我认为您不应该将其设为指针。

  2. 是的,返回指向 QWidget(在您的情况下为 StartWindow)的指针非常好。

  3. 你的 setter/getter 没问题。

似乎您在连接中输入错误,它应该如下所示:

QObject::connect(m_viewController.getStartWindow()->getStartListeningPushButton(), SIGNAL(clicked()),
this, SLOT(bla()));

关于c++ - 如何从小部件获取 ui 以便将其连接到另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34533689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com