首页 > 其他分享 >Qt(5.8.0)-运行框升级版

Qt(5.8.0)-运行框升级版

时间:2023-07-23 10:33:07浏览次数:39  
标签:Widget gt clicked Qt quot 5.8 lt ui 升级版

Qt编程实现简单的命令行窗口

本文介绍如何使用Qt框架编写一个简单的命令行窗口应用程序。通过该程序,用户可以在窗口中输入命令,并通过点击按钮执行命令。

首先,我们需要创建一个名为"Widget"的类,继承自QWidget,用于创建应用程序的主窗口。以下是widget.h头文件中的代码:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QProcess>
#include <QMessageBox>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_commitButton_clicked();
    void on_cancelButton_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

为了实现功能,我们在主窗口中放置了一些控件,如标签(QLabel)、文本输入框(QLineEdit)和按钮(QPushButton)等。参考以下是widget.ui文件中的XML代码:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
  <widget class="QLineEdit" name="cmdLineEdit">
   <property name="geometry">
    <rect>
     <x>120</x>
     <y>120</y>
     <width>221</width>
     <height>41</height>
    </rect>
   </property>
  </widget>
  <widget class="QLabel" name="label">
   <property name="geometry">
    <rect>
     <x>130</x>
     <y>90</y>
     <width>181</width>
     <height>31</height>
    </rect>
   </property>
   <property name="font">
    <font>
     <family>宋体</family>
     <pointsize>12</pointsize>
    </font>
   </property>
   <property name="text">
    <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;请输入命令:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
   </property>
  </widget>
  <widget class="QLabel" name="label_2">
   <property name="geometry">
    <rect>
     <x>60</x>
     <y>120</y>
     <width>51</width>
     <height>51</height>
    </rect>
   </property>
   <property name="font">
    <font>
     <family>宋体</family>
     <pointsize>9</pointsize>
    </font>
   </property>
   <property name="text">
    <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:12pt; font-weight:600;&quot;&gt;打开:&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
   </property>
  </widget>
  <widget class="QWidget" name="layoutWidget">
   <property name="geometry">
    <rect>
     <x>100</x>
     <y>170</y>
     <width>250</width>
     <height>28</height>
    </rect>
   </property>
   <layout class="QHBoxLayout" name="horizontalLayout">
    <item>
     <widget class="QPushButton" name="commitButton">
      <property name="font">
       <font>
        <family>宋体</family>
        <pointsize>12</pointsize>
       </font>
      </property>
      <property name="text">
       <string>确定</string>
      </property>
     </widget>
    </item>
    <item>
     <widget class="QPushButton" name="cancelButton">
      <property name="font">
       <font>
        <family>宋体</family>
        <pointsize>12</pointsize>
       </font>
      </property>
      <property name="text">
       <string>取消</string>
      </property>
     </widget>
    </item>
    <item>
     <widget class="QPushButton" name="browseButton">
      <property name="font">
       <font>
        <family>宋体</family>
        <pointsize>12</pointsize>
       </font>
      </property>
      <property name="text">
       <string>浏览</string>
      </property>
     </widget>
    </item>
   </layout>
  </widget>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

widget.cpp文件中,我们实现了主窗口类的构造函数、析构函数和按钮点击事件处理函数等。以下是widget.cpp文件中的部分代码:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 连接信号与槽
    connect(ui->cmdLineEdit, SIGNAL(returnPressed()), this, SLOT(on_commitButton_clicked()));
    connect(ui->cancelButton, &QPushButton::clicked, this, &Widget::on_cancelButton_clicked);

    connect(ui->browseButton, &QPushButton::clicked, [this]() {
        QMessageBox::information(this, "信息", "点击浏览");
    });
}

void Widget::on_commitButton_clicked()
{
    QString program = ui->cmdLineEdit->text();

    QProcess *myProcess = new QProcess(this);
    myProcess->start(program);
}

void Widget::on_cancelButton_clicked()
{
    this->close();
}

在该代码中,我们通过信号与槽机制将按钮的点击事件(clicked信号)与对应的槽函数进行连接。当提交按钮(commitButton)被点击时,从命令输入框(cmdLineEdit)中获取命令,并使用QProcess类执行该命令。同时,当取消按钮(cancelButton)被点击时,窗口将关闭。

最后,在main.cpp文件中,我们创建了QApplication对象,并实例化Widget类,启动该应用程序的事件循环。以下是main.cpp文件中的代码:

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();

    return a.exec();
}

通过以上的代码实现,我们可以创建一个基于Qt框架的命令行窗口应用程序。通过文本输入框输入命令,并点击"确定"按钮进行执行,点击"取消"按钮关闭窗口。

标签:Widget,gt,clicked,Qt,quot,5.8,lt,ui,升级版
From: https://www.cnblogs.com/2509-SYM/p/17574749.html

相关文章

  • Qt(5.8.0)-Cmd模拟(纯手写)
    以下是对上述Qt程序的详细博客,使用Markdown的代码块方式呈现:Qt编程:实现一个简单的命令行窗口Qt是一种跨平台的C++应用程序开发框架,可以用于开发各种类型的应用程序,包括图形界面(GUI)应用程序。本文将介绍如何使用Qt框架实现一个简单的命令行窗口,类似于Windows的运行框,用户可以在......
  • QT从入门到实战完整版 P36
    绘图事件widget.h#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>QT_BEGIN_NAMESPACEnamespaceUi{classWidget;}QT_END_NAMESPACEclassWidget:publicQWidget{Q_OBJECTpublic:Widget(QWidget*parent=nullptr);~Widget();......
  • MQTT学习笔记
    客户端:mqttxforwindows,并提供基于互联网的mqtt服务,不用再搭建 MQTT的C语言编程:下载paho的包,在github上,有基于Linux的release版本,下载后,将其解压到任意目录,比如:/opt/mqtt目录结构如下: 安装完毕后,进行配置(如果不配置,动态链接库无法找到)设置动态链接库的搜索路径export......
  • [TSG@Site开发日志3]从C#到Qt,再从Qt到C# 和 Qt的组合开发,浅谈在采集端工控设备开发中
    [TSG开发日志3]从C#到Qt,再从Qt到C#,浅谈不同技术之间选型的利与弊当前在South公司的开发历经了几个时代,第一个时代是用C#进行的开发,第二个时代是从C#向Qt逐渐转型,第三个时代是我现在站在十字路口上,又需要将采集端软件从Qt的路上拉回来。为什么先看看AI怎么说选择使用C#还是Qt来......
  • QT从入门到实战完整版 P32 P33
    定时器1widget.h#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>QT_BEGIN_NAMESPACEnamespaceUi{classWidget;}QT_END_NAMESPACEclassWidget:publicQWidget{Q_OBJECTpublic:Widget(QWidget*parent=nullptr);~Widget();......
  • VTK 9.2 Qt 5.14 安装及错误处理
    安装注意:编译release和debug,通过切换配置为release和debug,文件都是在cmake的CMAKE_INSTALL_PREFIX指定的文件夹,需要编译完一种后,把这个文件夹改名(比如debug配置,则改名为debug),不然会覆盖。在Qt项目中,出现错误:“无法解析的外部符号__imp_gl***”,“项目-属性-链接器-输入”添加:OpenG......
  • Windows10 下 Neo4j1.5.8 安装教程
    前言Neo4j是一个高性能的、NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。基于磁盘的、具备完全的事务特性的Java持久化引擎,这里就不把他和常用关系型数据库做对比了。因为篇幅有限,我这里也是第一次使用,所以以下完全是保姆级的安装教程了。 安装步骤1.打开Neo......
  • VTK9.1.0在Windows10+VS2019+Qt 5.15.2环境下编译安装以及VTK应用于QT
    下载VTK安装包在VTK官网Download|VTK中下载VTK9.1.0待编译源码,解压后在路径Documentation/dev/bulid.md中可以看到官方提供的Prerequisites以及简易教程编译环境安装按照官方提供的Prerequisites,安装以下环境:CMakeVersion3.12ornewer,however,thelatestversionisal......
  • MQTT 与 Kafka|物联网消息与流数据集成实践
    MQTT如何与Kafka一起使用?MQTT(MessageQueuingTelemetryTransport)是一种轻量级的消息传输协议,专为受限网络环境下的设备通信而设计。ApacheKafka是一个分布式流处理平台,旨在处理大规模的实时数据流。Kafka和MQTT是实现物联网数据端到端集成的互补技术。通过结合使用......
  • Windows10 下 Neo4j1.5.8 安装教程
    前言Neo4j是一个高性能的、NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。基于磁盘的、具备完全的事务特性的Java持久化引擎,这里就不把他和常用关系型数据库做对比了。因为篇幅有限,我这里也是第一次使用,所以以下完全是保姆级的安装教程了。 安装步骤1.打开Neo4j官......