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

    

1、摆放控件

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

           

2、实现功能

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

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

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

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

     QProcess *proc=new QProcess();
QString program=ui->lineEdit->text().trimmed();
proc->start(program);  //使用QDesktopServices::openUrl(QUrl(program));也可 if(!proc->waitForStarted()) //设置给出提示
{
QMessageBox::warning(this,program,"Windows找不到文件'v',请确定文件名后再试");
return ;
}
ui->lineEdit->clear();

2)取消操作,右击进入槽,选择clicked,输入this->close()即可

3)浏览操作

浏览操作需获取指定的文件路径,采用getopenfilename即可获取指定文件的绝对路径,将值传回文本框中即可。

 void Widget::on_BrowserButton_clicked()
{
QString fileName=QFileDialog::getOpenFileName(this,"打开文件",QDir::currentPath(),tr("程序 (*.exe *.pif *.com *.bat *.cmd)"));
if(fileName.isEmpty())
{
QMessageBox::warning(this,fileName,"Windows找不到文件,请确定文件名后再试");
return;
}
  else
ui->lineEdit->setText(fileName);
}

3、完善界面

设置登陆界面的属性。在构造函数中设置Ok按钮不可用(ui->OkButton->setEnabled(false);)并设置程序界面大小和启动界面位置。

     this->setFixedSize(,);
this->setWindowTitle("运行");
this->move(,);
ui->OkButton->setEnabled(false); QObject::connect(ui->lineEdit,SIGNAL(textEdited(QString)),ui->OkButton,SLOT(setDisabled(TRUE))); //设置信号与槽实际上是调用此语句进行关联

设置没有任何输入时确定按钮不可用。在ui中选中文本框右击进入槽中,选择textchanged(),完善该函数。

 void Widget::on_lineEdit_textChanged(const QString &arg1)
{
if(ui->lineEdit->text()!="")
ui->OkButton->setEnabled(true);
else
ui->OkButton->setEnabled(false);
}

至此即完成。

qt学习001之运行对话框的更多相关文章

  1. Qt 学习之路 2(17):文件对话框

    Home / Qt 学习之路 2 / Qt 学习之路 2(17):文件对话框 Qt 学习之路 2(17):文件对话框  豆子  2012年9月24日  Qt 学习之路 2  85条评论 在前面的章节中 ...

  2. Qt 学习之路 2(15):标准对话框 QMessageBox

    Qt 学习之路 2(15):标准对话框 QMessageBox  豆子  2012年9月18日  Qt 学习之路 2  40条评论 所谓标准对话框,是 Qt 内置的一系列对话框,用于简化开发.事实上, ...

  3. QT学习之路--创建一个对话框

    Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学 ...

  4. QT学习 之 对话框 (四) 字体对话框、消息对话框、文件对话框、进程对话框(超详细中文注释)

    QMessageBox类: 含有Question消息框.Information消息框.Warning消息框和Critical消息框等 通常有两种方式可以来创建标准消息对话框: 一种是采用“基于属性”的 ...

  5. Qt 学习之路 2(14):对话框数据传递

    Home / Qt 学习之路 2 / Qt 学习之路 2(14):对话框数据传递 Qt 学习之路 2(14):对话框数据传递  豆子  2012年9月15日  Qt 学习之路 2  53条评论 对话框 ...

  6. Qt 学习之路 2(13):对话框简介

    Qt 学习之路 2(13):对话框简介  豆子  2012年9月14日  Qt 学习之路 2  53条评论 对话框是 GUI 程序中不可或缺的组成部分.很多不能或者不适合放入主窗口的功能组件都必须放在 ...

  7. QT学习之第一个程序

    QT学习之第一个程序 目录 手动创建主窗口 居中显示 添加窗口图标 显示提示文本 Message Box的应用 手动连接信号与槽 手动创建主窗口 窗口类型 QMainWindow: 可以包含菜单栏.工 ...

  8. Qt学习之信号与槽(一)

    Qt学习之信号与槽(一) 目录 QT的信号与槽机制 在窗口的UI设计中操作添加信号和槽     QT的信号与槽机制   QT的两种机制 在Qt和PyQt中有两种通信机制: 低级事件处理机制(low-l ...

  9. Qt 学习之路 2(44):QFileSystemModel

    Home / Qt 学习之路 2 / Qt 学习之路 2(44):QFileSystemModel Qt 学习之路 2(44):QFileSystemModel  豆子  2013年2月21日  Qt ...

随机推荐

  1. cmake add_custom_command 使用

    cmake add_custom_command 使用 今天整理编译工程,想在编译工程前面用tolua生成c文件, 使用命令add_custom_command后,附加的命令并不执行,如下: add_ ...

  2. docker-solr 使用host模式修改默认的8983端口号

    1.使用root账号进入docker-solr docker exec -it 127627ab6247 -u root /bin/bash 2.安装vim apt-get update apt-ge ...

  3. C语言volatile关键字-漫画(转)

    转载地址:https://zhuanlan.zhihu.com/p/56191979 ————— 第二天 ————— ———————————— Java内存模型简称JMM(Java Memory Mo ...

  4. Linux DNS 服务器安装、配置和维护

    每个 IP 地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开.有了主机名,就不要死记硬背每台 IP 设备的 IP 地址,只要记住相对直观有意义的主机名就行了.这就是 DNS ...

  5. Winfrom BackgroundWorker

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Reflection ...

  6. JavaScript问题——在浏览器中每一个元素都有一个offsetParent属性,这个属性是什么?

    原文链接http://www.cnblogs.com/zcjnever/archive/2011/04/21/2023133.html Javascript中的offsetParent属性 支持的浏览 ...

  7. 在Ubuntu下编译Qt错误及处理办法

    平台:Ubuntu16.04  64bit 虚拟机:VirtualBOX 编译软件:Qt 32bit (在64位环境下编译32bit的程序会出现很多错误,从编译器的安装以及整个库的编译) 问题一:er ...

  8. Mongodb中的 原子性 隔离性

    读写锁 Mongodb使用读写锁来来控制并发操作: 当进行读操作的时候会加读锁,这个时候其他读操作可以也获得读锁.但是不能或者写锁. 当进行写操作的时候会加写锁,这个时候不能进行其他的读操作和写操作. ...

  9. Consul集群搭建 2Server+ 3Client

    环境说明: 192.168.202.177 consul-server01 192.168.202.177 consul-server02192.168.202.174 mysql server no ...

  10. TensorFlow的介绍和安装

    TensorFlow概要 由google Brain开源,设计初衷是加速机器学习的研究,2015年11月在GitHub上开源,2016年4月分布式版本,2017年发布了1.0版本,趋于稳定. Tens ...