使用QT实现Window下运行对话框
1、摆放控件
首先设置并摆放相应的对话框控件,并更改相应名称;
2、实现功能
1)在文本框中输入信息后,点击确定或回车可以运行系统中相应的程序;
点击回车运行指定文本内容,可以设置文本框的信号与确定槽函数的关联,直接按F4进行选择信号与槽,选择如下所示。
实现确定按钮,右击选择转到槽,选择clicked(),此时QT已经增加了on_OkButton_clicked()函数,要运行程序,则需要创建一个进程。
在头文件中包含<QProcess>,在函数体中创建实例指针对象,读取文本框信息,启动start即可。此时已经可以完成进本的运行功能了(可以输入motepad\mspaint试验)。
1 QProcess *proc=new QProcess(); 2 QString program=ui->lineEdit->text().trimmed(); 3 proc->start(program); //使用QDesktopServices::openUrl(QUrl(program));也可 4 5 if(!proc->waitForStarted()) //设置给出提示 6 { 7 QMessageBox::warning(this,program,"Windows找不到文件'v',请确定文件名后再试"); 8 return ; 9 } 10 ui->lineEdit->clear();
2)取消操作,右击进入槽,选择clicked,输入this->close()即可
3)浏览操作
浏览操作需获取指定的文件路径,采用getopenfilename即可获取指定文件的绝对路径,将值传回文本框中即可。
1 void Widget::on_BrowserButton_clicked() 2 { 3 QString fileName=QFileDialog::getOpenFileName(this,"打开文件",QDir::currentPath(),tr("程序 (*.exe *.pif *.com *.bat *.cmd)")); 4 if(fileName.isEmpty()) 5 { 6 QMessageBox::warning(this,fileName,"Windows找不到文件,请确定文件名后再试"); 7 return; 8 } 9 else 10 ui->lineEdit->setText(fileName); 11 }
3、完善界面
设置登陆界面的属性。在构造函数中设置Ok按钮不可用(ui->OkButton->setEnabled(false);)并设置程序界面大小和启动界面位置。
1 this->setFixedSize(400,150); 2 this->setWindowTitle("运行"); 3 this->move(10,500); 4 ui->OkButton->setEnabled(false); 5 6 QObject::connect(ui->lineEdit,SIGNAL(textEdited(QString)),ui->OkButton,SLOT(setDisabled(TRUE))); //设置信号与槽实际上是调用此语句进行关联
设置没有任何输入时确定按钮不可用。在ui中选中文本框右击进入槽中,选择textchanged(),完善该函数。
1 void Widget::on_lineEdit_textChanged(const QString &arg1) 2 { 3 if(ui->lineEdit->text()!="") 4 ui->OkButton->setEnabled(true); 5 else 6 ui->OkButton->setEnabled(false); 7 }
至此即完成。