【问题标题】:Qt: Access functions of class which is using a GUI widget outside the constructorQt:访问在构造函数之外使用 GUI 小部件的类的函数
【发布时间】: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。

处理这种情况的最佳方法是什么?

【问题讨论】:

    标签: c++ qt class


    【解决方案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 之前声明,所以它在使用时已经被构造了。

      【讨论】:

        猜你喜欢
        • 2023-04-02
        • 2021-03-18
        • 2011-10-26
        • 1970-01-01
        • 2019-07-16
        • 1970-01-01
        • 2021-06-11
        • 2011-05-08
        • 1970-01-01
        相关资源
        最近更新 更多