在我们的电脑上,按下Windows+R这个快捷键可以打开“运行”对话框,在对话框栏中输入自己想要打开的应用程
序名称即可运行应用,这几天学了一些QT的知识,所以准备动手实现一个简易的“运行”对话框。
(1)按下快捷键后,首先需要在编辑框中输入你想要启动程序的应用名,在输入之前确定按钮是不可用的,一但
有了输入按钮便能使用。名字输入正确按下回车键或者确认按钮就能打开应用,在这里面有三个信号传递:按钮,回车
键,按下按钮。
(2)取消按钮只要在信号槽中添加close函数,便可结束程序。
(3)浏览按钮则是打开文件框的操作并进行文件浏览。
下面是实现程序的代码:
widget.h:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QFile>
#include <QTextEdit>
#include <QMessageBox>
#include <QTextStream>
#include <QFileDialog>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
//void setWindowText() ; //设置标题
void on_subitButton_clicked(); //启动应用程序
void setButtonEnableSlot(QString) ; //确认按钮可见
void on_cancleButton_clicked(); //关闭运行对话框
void slotOpenFileDialog() ; //打开文件
private:
Ui::Widget *ui;
QTextEdit *showText;
};
#endif // WIDGET_H
main.cpp:
#include <QtGui/QApplication>
#include "widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
#include "widget.h"
#include "ui_widget.h"
#include <QProcess>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->move(0,520); //设置窗口位置
this->setWindowTitle("Runnning"); //设置窗口标题
//this->setMaximumSize(393,171) ; //窗口最大
//this->setMinimumSize(393,171) ; //窗口最小
showText = new QTextEdit();
ui->subitButton->setEnabled(false);
//QObject::connect(ui->cancleButton,SIGNAL(clicked()),this,SLOT(setWindowText())); //设置标题
QObject::connect(ui->browserButton, SIGNAL(clicked()), this, SLOT(slotOpenFileDialog()));
QObject::connect(ui->cmdLineEdit,SIGNAL(returnPressed()),this,SLOT(on_subitButton_clicked()));//回车启动应用程序
QObject::connect(ui->cmdLineEdit,SIGNAL(textEdited(QString)),this,SLOT(setButtonEnableSlot(QString))); //让确认键可见
}
Widget::~Widget()
{
delete ui;
}
//void Widget::setWindowText() //设置标题
//{
// this->setWindowTitle("I am guyipeng");
//}
void Widget::on_subitButton_clicked() //开启一个应用程序
{
QProcess * pMypro = new QProcess ;
QString temp = ui->cmdLineEdit->text() ;
pMypro->start(temp.trimmed());
this->close(); //关闭
}
void Widget::setButtonEnableSlot(QString) //让当前的确定按钮可见
{
ui->subitButton->setEnabled(true);
}
void Widget::on_cancleButton_clicked()
{
this->close();
}
void Widget::slotOpenFileDialog()
{
QString fileName = QFileDialog :: getOpenFileName(this, NULL, NULL, "*.h *.cpp *.txt");
//---打开文件并读取文件内容
QFile file(fileName);
//--打开文件成功
if (file.open(QIODevice ::ReadOnly | QIODevice ::Text))
{
QTextStream textStream(&file);
while (!textStream.atEnd())
{
//---QtextEdit按行显示文件内容
showText->append(textStream.readLine());
}
}
else //---打开文件失败
{
QMessageBox ::information(NULL, NULL, "open file error");
}
}
运行程序后:
输入notepad后,打开notepad应用,窗口也关闭:
浏览: