QT学习——“运行”对话框的实现

来源:互联网 发布:欠淘宝贷款200万 编辑:程序博客网 时间:2024/06/07 20:07

         在我们的电脑上,按下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();}


widget.cpp:

#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应用,窗口也关闭:



       浏览:


原创粉丝点击