微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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"),tr("Text files (*.txt);;All files (*)"));
    if (filename.size() == 0)
        return;
    else
        ui->inputEdit->setText(filename);
}

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

解决方法

你的代码看起来不错.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐