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

         在我们的电脑上,按下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应用,窗口也关闭:



       浏览:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值