c – Qt:某些插槽不会在发布模式下执行

我在Qt(MSVC 2008)中做了一些简单的程序,只有很少的复选框和按钮.在调试模式下,一切正常,但我不能分发这样的可执行文件,因为大多数人没有安装Visual Studio.当我在发布模式下编译它时,只有2个按钮工作.

我使用Qt Creator的’绘图工具’设计了我的窗口(Qt Designer,我猜).
我的头文件中定义了这样的插槽:

private slots:
    void on_goButton_clicked(); // Works fine

    void on_InputCheckBox_stateChanged(int arg1); // Don't work
    void on_outputFileCheckBox_stateChanged(int arg1); // Same as above

    void on_inputBrowseButton_clicked();  // Don't work, since theyre disabled
    void on_outputBrowseButton_clicked(); // Same as above

    void replyFinished(QNetworkReply *);

我对这些信号的实现如下:

void MainWindow::on_InputCheckBox_stateChanged(int arg1)
{
    if (arg1 == Qt::Checked)
    {
        ui->inputEdit->setEnabled(true);
        ui->inputBrowseButton->setEnabled(true);
     }
    else
    {
        ui->inputEdit->setEnabled(false);
        ui->inputBrowseButton->setEnabled(false);
    }
}

void MainWindow::on_outputFileCheckBox_stateChanged(int arg1)
{
    if (arg1 == Qt::Checked)
    {
        ui->outputEdit->setEnabled(true);
        ui->outputBrowseButton->setEnabled(true);
    }
    else
    {
        ui->outputEdit->setEnabled(false);
        ui->outputBrowseButton->setEnabled(false);
    }
}

void MainWindow::on_inputBrowseButton_clicked()
{
    QString documents = DesktopServices::storageLocation(QDesktopServices::DocumentsLocation);
    QString filename = QFileDialog::getOpenFileName(
            this,
            tr("Select input file"),
            documents,
            tr("Text files (*.txt);;All files (*)"));
    if (filename.size() == 0)
        return;
    else
         ui->inputEdit->setText(filename);
}

void MainWindow::on_outputBrowseButton_clicked()
{
    QString documents = QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation);
    QString filename = QFileDialog::getOpenFileName(
            this,
            tr("Select output file"),
            documents,
            tr("Text files (*.txt);;All files (*)"));
    if (filename.size() == 0)
        return;
    else
        ui->inputEdit->setText(filename);
}

请原谅我的英语,并提前感谢你.

最佳答案 你的代码看起来不错.

尝试运行“make clean”或“qmake”.您的“ui_”或“moc_”文件可能需要更新.

点赞