Qt,MainWindow的新对象,app崩溃,如何发出finished()信号

时间:2012-01-07 09:24:04

标签: qt button mainwindow

在主类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; 
        }

但没有任何反应,我做错了什么。

1 个答案:

答案 0 :(得分:0)

信号始终是对象而不是类级别。您没有连接到您尝试收听信号的“已下载”对象的实例。您连接的那个是在MainWindow构造函数中创建和删除的,与第二个代码块中创建的无关。