在主类MainWindow中,我有一个方法,在下载应用程序时为每个按钮设置setEnabled(“false”)。在其他类“下载”我有负责下载的方法。有这样的if ( uRet == S_OK )
并且在下载之后我想为每个按钮设置setEnable(“true”),但是我不能在这个if()中运行MainWindow的方法'couse我得到'QWidget:必须构造QPaintDevice之前的QApplication“。
如何从Download Class中的MainWindow类运行该方法,或从Download Class中引用这些按钮。
编辑://我需要发出信号
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;
}
但没有任何反应,我做错了什么。
答案 0 :(得分:0)
信号始终是对象而不是类级别。您没有连接到您尝试收听信号的“已下载”对象的实例。您连接的那个是在MainWindow构造函数中创建和删除的,与第二个代码块中创建的无关。