如何在QT中从另一个类访问ui对象

时间:2012-08-20 09:37:04

标签: qt

我在QT设计器

中创建了一个带有小部件的UI文件
'testScreen.ui'
'testScreen.cpp'
'testScreen.h'

现在我在另一个ccp文件'sstApplication.cpp'中创建TestScreen类的对象

TestScreen *obj =  new TestScreen()

现在当我尝试访问testScreen.ui'

的小部件时
this->ui->next_But->setEnabled(true);

我无法做到

1 个答案:

答案 0 :(得分:3)

使用QtDesigner时,子窗口小部件将封装到生成的Ui类中。您有两种方法可以使用它:

1)为ui类编写一个getter。这是一个糟糕的方法,因为它违反了封装:

public:
    Ui::TestScreen *ui() const { return ui; }

并从您的sstApplication.cpp访问它:

TestScreen *obj =  new TestScreen()
obj->ui()->next_But->setEnabled(true);

2)为下一个按钮状态设置一个setter:

public:
    void enableNextButton(bool enabled = true) { this->ui->next_But->setEnabled(enabled); }

并像这样使用它:

obj->enableNextButton();

但是,最好的解决方案是将窗口小部件状态管理逻辑封装到TestScreen