我在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); }
请原谅我的英语,并提前感谢你.