【发布时间】:2012-01-07 09:24:03
【问题描述】:
在主类 MainWindow 中,当应用程序正在下载时,我有为每个按钮设置 setEnabled("false") 的方法。在其他类“下载”中,我有负责下载的方法。有这样的if ( uRet == S_OK ),下载后我想为每个按钮设置setEnable(“true”),但我不能在这个if()中从MainWindow运行方法,因为我得到“QWidget:必须构造一个QApplication在 QPaintDevice”之前。
如何从Download Class 中的MainWindow 类运行方法,或者从Download Class 中引用这些按钮。
edit://我需要发出信号
class downloaded : public QObject
{
Q_OBJECT
public:
void test3();
signals:
void changeEnabled();
};
void downloaded::test3(){
emit changeEnabled();
}
class MainWindow : public QMainWindow{
Q_OBJECT
public:
...
public slots:
void ONchangeEnabled();
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
downloaded test_object;
connect(&test_object, SIGNAL(changeEnabled() ), this, SLOT(ONchangeEnabled() ) );
ui->setupUi(this);
setupUI();
}
void MainWindow::ONchangeEnabled(){
ui->actionDL->setEnabled(true);
}
在下载文件的功能中,我有这样的东西。
downloaded obiekt;
...
if ( uRet == S_OK )
{
obiekt.test3(); return 0;
}
else {
obiekt.test3(); return 1;
}
但是什么也没发生,我做错了什么。
【问题讨论】:
-
您发布的代码不一致(信号声明和发出的信号名称不同)。由于信号和插槽名称非常重要,请清理您的问题并确保它与您的真实代码匹配。
标签: qt button mainwindow