【发布时间】:2014-08-14 23:12:04
【问题描述】:
在 Qt C++ 中,我有一个父对象 MainWindow。 MainWindow 有(除其他外)2 个成员对象:vector 和 Serial。
GUI的一些相关成员:
QPushButton pushButton;
int itemNumber;
连载相关成员:
void send(int number)
当单击 GUI 的成员 pushButton 时,我想将 GUI 的成员“pushButton”作为参数传递给函数 Serial::send(int number)。我看到了一种选择,例如
connect(GUI,SIGNAL(clicked()),this,SLOT(customSlot()));
在我的 MainWindow 函数中。但是,然后我不知道它来自向量中的哪个项目,所以我不知道要抓取哪个 itemNumber(它们都是不同的)。
我还想也许我会在 GUI 类中执行此操作,但它无法访问 Serial::send(int number) 方法。我不想在每个 GUI 中都有一个 Serial 对象,因为此时它不会那样工作。
如何将来自子对象 GUI 的信息从信号传递到父对象 MainWindow?
谢谢!
【问题讨论】:
-
你看过
QSignalMapper吗?见qt-project.org/doc/qt-5/qsignalmapper.html -
另一种可能的方法:子类 QPushButton,并让子类声明 clicked(int) 信号和 userClickedMe() 槽。让它将它的 clicked() 信号连接到它的 userClickedMe() 插槽,并让 userClickedMe() 执行“发出 clicked(myNumber)”。现在您的主 GUI 代码可以按照您想要的方式将按钮子类的 clicked(int) 连接到它的插槽。
-
@RA。这是一个好方法!感谢您将我指向 QSignalMapper 类,这将非常有用!
-
@JeremyFriesner 我也喜欢这个主意。这将允许我传递更多信息,我认为该项目的其他领域可能需要这些信息。感谢您的提示!
标签: c++ qt user-interface qt-signals