Qt:访问在构造函数之外使用 GUI 小部件的类的函数
Posted
技术标签:
【中文标题】Qt:访问在构造函数之外使用 GUI 小部件的类的函数【英文标题】:Qt: Access functions of class which is using a GUI widget outside the constructor 【发布时间】:2016-12-22 07:44:35 【问题描述】:我有一个名为“mainWindow”的 Qt-GUI。
在构造函数中,我使用了一个名为“testclass”的类,它使用来自 GUI 的小部件。
mainWindow::mainWindow(QWidget *parent): QMainWindow(parent)
testclass window_test(ui.Widget);
window_test.function();
现在我想在构造函数之外访问“window_test”的函数。
我尝试添加
testclass window_test(ui.Widget);
作为 mainWindow 类的类成员,但我无法访问那里的 ui.Widget。
处理这种情况的最佳方法是什么?
【问题讨论】:
【参考方案1】:您是否在 mainWindow 的头文件中声明了函数的原型?这可能只是范围问题。
【讨论】:
我有“mainWindow”类和“testclass”的 .h/.cpp 文件。我在“mainWindow”构造函数中生成了一个“testclass”实例。但是现在我只能在构造函数中访问“testclass”的函数,但我也想在按钮回调函数等中访问它们。 在您的mainWindow.h
的私有下添加该实例,这应该使其在您的 mainWindow.cpp 中可用。【参考方案2】:
我将“testclass”的实例添加到 mainWindow.h,但我必须为其使用标准构造函数。因此,我声明了一个新函数来将小部件传递给类。
【讨论】:
【参考方案3】:如果你必须将参数传递给你的成员变量window_test
的构造函数,你可以这样做:
mainWindow::mainWindow(QWidget *parent) : QMainWindow(parent),
window_test(ui.Widget)
成员变量的声明很简单
class mainWindow
...
testwindow window_test;
;
如果ui
本身是mainWindow
的成员变量,它有一个构造函数,那么声明的顺序可能很重要。 ui
应该在 window_test
之前声明,所以它在使用时已经被构造了。
【讨论】:
以上是关于Qt:访问在构造函数之外使用 GUI 小部件的类的函数的主要内容,如果未能解决你的问题,请参考以下文章
类构造函数中指向 QProcess 对象的指针使 qt GUI 崩溃