qt学习001之运行对话框

使用QT实现Window下运行对话框

    

1、摆放控件

        首先设置并摆放相应的对话框控件,并更改相应名称;

           

2、实现功能

       1)在文本框中输入信息后,点击确定或回车可以运行系统中相应的程序;

       点击回车运行指定文本内容,可以设置文本框的信号与确定槽函数的关联,直接按F4进行选择信号与槽,选择如下所示。

   

        实现确定按钮,右击选择转到槽,选择clicked(),此时QT已经增加了on_OkButton_clicked()函数,要运行程序,则需要创建一个进程。

       

        在头文件中包含<QProcess>,在函数体中创建实例指针对象,读取文本框信息,启动start即可。此时已经可以完成进本的运行功能了(可以输入motepadmspaint试验)。

 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 }

        至此即完成。

    

原文地址:https://www.cnblogs.com/maxonzou/p/10654493.html