0

我在 QT 设计器中创建了一个带有一些小部件的 UI 文件

'testScreen.ui'
'testScreen.cpp'
'testScreen.h'

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

TestScreen *obj =  new TestScreen()

现在当我尝试访问 testScreen.ui 的小部件时'

this->ui->next_But->setEnabled(true);

我做不到

4

1 回答 1

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)为下一个按钮状态设置一个设置器:

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

并像这样使用它:

obj->enableNextButton();

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

于 2012-08-20T09:52:05.757 回答