7、Qt5开发及实列(笔记3-系统操作)

avatar
作者
猴君
阅读量:0

说明:此示例包含了基本的常使用的系统操作

效果如下:
在这里插入图片描述

mainwindos.cpp

#pragma execution_character_set("utf-8") #include "mainwindow.h"  #include <QDesktopWidget> #include <QApplication> #include <QHostInfo> #include <QNetworkInterface>  #include <QListView> #include <QStringListModel> #include <QProcess> MainWindow::MainWindow(QWidget *parent)     : QMainWindow(parent) {     QDesktopWidget *desktopWidget = QApplication::desktop();      //1.1 获取屏幕分辨率     QRect screenRect = desktopWidget->screenGeometry();     int sWidth = screenRect.width();//屏幕宽度     int sHeight = screenRect.height();     QLabel *m_label00 = new QLabel("屏幕分辨率:");     QString ip = (QString::number(sWidth,10)+"X"+QString::number(sHeight,10));     QLabel *m_label01 = new QLabel(ip);      //1.2 获取计算机名称     QString localHostName = QHostInfo::localHostName();     QLabel *m_label10 = new QLabel("本机名:");     QLabel *m_label11 = new QLabel(localHostName);         //1.3 获取计算机IP     QLabel *m_label20 = new QLabel("IP:");     QLabel *m_label21 = new QLabel();     QHostInfo hostInfo = QHostInfo::fromName(localHostName);     QList<QHostAddress> listAddress = hostInfo.addresses();// 创建一个 QList,类型 QHostAddress     if(!listAddress.isEmpty())     {         m_label21->setText(listAddress.first().toString());     }      //1.5  默认取应用程序根目录     QString strdirpath;     strdirpath = qApp->applicationDirPath();//     QLabel *m_label40 = new QLabel("applicationDirPath:");     QLabel *m_label41 = new QLabel(strdirpath);      //1.6  默认取应用程序可执行文件名称     QString strapplicationFilePath;     strapplicationFilePath = qApp->applicationFilePath();     QLabel *m_label50 = new QLabel("applicationFilePath:");     QLabel *m_label51 = new QLabel(strapplicationFilePath);      //1.7 获取系统环境变量     //标题     QLabel *m_label30 = new QLabel("获取 Path 环境变量:");     QListView *listView = new QListView();//实例 QListView     listView->setGeometry(QRect(10,10,380,280));//QListView 位置     QStringList strList = QProcess::systemEnvironment();//实例 QStringList 接收 path 系统变量     QStringListModel *model = new QStringListModel(strList);//装载数据模型     listView->setModel(model);//绑定数据        //1.8执行系统命令     //实例命令输入对话框     comm = new QLineEdit();     comm->setText("ipconfig");     comm->setGeometry(QRect(20,20,260,25));     //实例执行按钮     btClick = new QPushButton(this);     btClick->setText("执行");     btClick->setGeometry(QRect(290,20,80,25));     connect(btClick,SIGNAL(clicked()),this,SLOT(clickExecution()));     //实例输出对话框     outEdit = new QPlainTextEdit(this);     outEdit->setGeometry(QRect(20,60,350,200));     //实例 QProcess     process = new QProcess;     connect(process, SIGNAL(readyRead()), this, SLOT(readOutput()));     //dos 命令查阅     label = new QLabel(this);     label->setGeometry(QRect(30,265,200,25));     label->setText(tr("<a href=\"http://www.baidu.com/s?wd=dos 命令大全\">命令 DOS查阅</a>"));     //开启超链接     label->setOpenExternalLinks(true);      QFrameshow1 = new QFrame();     QFrameshow1->setFrameStyle(QFrame::Panel|QFrame::Sunken);//设置框架样式      QGridLayout *childlayout1 = new QGridLayout();     childlayout1->addWidget(m_label00,0,0,1,1);     childlayout1->addWidget(m_label01,0,1,1,2);     childlayout1->addWidget(m_label10,1,0);     childlayout1->addWidget(m_label11,1,1);     childlayout1->addWidget(m_label20,2,0);     childlayout1->addWidget(m_label21,2,1);     childlayout1->addWidget(m_label40,3,0);     childlayout1->addWidget(m_label41,3,1);     childlayout1->addWidget(m_label50,4,0);     childlayout1->addWidget(m_label51,4,1);      QVBoxLayout *childlayout2 = new QVBoxLayout;     childlayout2->addWidget(m_label30);     childlayout2->addWidget(listView);      QGridLayout *childlayout3 = new QGridLayout();     childlayout3->addWidget(comm);     childlayout3->addWidget(btClick);     childlayout3->addWidget(outEdit);     //childlayout3->addWidget(process);     childlayout3->addWidget(label);      QVBoxLayout *mainlayout = new QVBoxLayout(QFrameshow1);     mainlayout->addLayout(childlayout1);     mainlayout->addLayout(childlayout2);     mainlayout->addLayout(childlayout3);     //显示布局控件     QWidget *m_widget = new QWidget();     m_widget->setLayout(mainlayout);     this->setCentralWidget(m_widget); }  MainWindow::~MainWindow() {  }  //执行 DOS 命令 void MainWindow::clickExecution() {  //定义变量接收 dos 命令  QString info = comm->text();  //执行命令  process->start(info);  //绑定反馈值  outEdit->setPlainText(output); } //QProcess 事件 void MainWindow::readOutput() {  //接收反馈信息  output +=process->readAll();  //将返回值绑定控件   outEdit->setPlainText(output); }  

mainwindow.h

#ifndef MAINWINDOW_H #define MAINWINDOW_H  #include <QMainWindow> #include <QFrame> #include <QLabel> #include <QWidget> #include <QGridLayout> #include <QHBoxLayout> #include <QLineEdit> #include <QPushButton> #include <QPlainTextEdit> #include <QProcess> #include <QLabel> class MainWindow : public QMainWindow {     Q_OBJECT  public:     MainWindow(QWidget *parent = 0);     ~MainWindow();     QFrame *QFrameshow1;  private:     QLineEdit *comm; //dos 命令输入框     QPlainTextEdit *outEdit; //命令执行反馈框     QPushButton *btClick; //执行按钮     QProcess *process; //QProcess     QString output; //接收反馈信息     QLabel *label;  private slots:     void clickExecution(); //点击按钮事件     void readOutput(); //QProcess 事件  };  #endif // MAINWINDOW_H  

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!