首页 > 其他分享 >QT基础语法与控件

QT基础语法与控件

时间:2024-05-20 16:12:48浏览次数:28  
标签:控件 QT TCPClient 语法 ui new include

1.基础

使用纯正的开源版本QT

使用C++来实现QT
使用QT可以使C++项目可视化
本身也是C++的一个库
允许跨平台

QT特征
面向对象,模块化设计调用,所有QT控件可继承
控件之间的通信,signal slot
友好的联机帮助,函数参数手册
自定义控件设计

QT Creator编译器
集成开发环境IDE
直接下载QT的SDK软件开发包(包含C++库和编译器QTCreator)

QT应用
嵌入式应用
桌面应用

2.QT编译过程

实际的QT中布局是与功能实现分开的,下面的例子是展示最纯粹的代码实现

实现一个简单的窗口程序,来通过命令行,手动实现代码的编译过程
(1)代码

include//程序

include//标签

include//文本框

include//控件

include//水平布局

include//垂直布局

include//窗口

int main(int argc, char* argv[]) {

//被执行的程序是一个对象
QApplication app(argc, argv);//建立一个程序对象

//每一个控件都是一个对象
QLable* infoLabel = new QLabel;//建标签对象
QLable* openLabel = new QLabel;
QLineEdit* cmdLineEdit = new QLineEdit;//文本框
QPushButton* commitButton= new QPushButton;//按钮
QPushButton* cancelButton = new QPushButton;

infoLabel->setText("input cmd:");//设置控件的文本值
openLabel->setText("open");
commitButton->setText("commit");
cancelButton->setText("cancel");

//布局也是一个对象
QHBoxLayout* cmdLayout = new QHBoxLayout;//水平布局对象
cmdLayout->addWidget(openLabel);//将两个控件放到一个水平对象上
cmdLayout->addWidget(cmdLineEdit);

QHBoxLayout* buttonLayout = new QHBoxLayout;//水平布局对象2
buttonLayout->addWidget(commit);
buttonLayout->addWidget(cancel);

QVBoxLayout* mainLayout = new QVBoxLayout;//垂直布局对象
mainLayout->addWidget(infoLabel);
mainLayout->addLayout(cmdLayout);//添加布局的函数与添加控件的不同
mainLayout->addLayout(buttonLayout);

//窗口也是一个对象
QWidget w;
w.setLayout(mainLayout);//把主布局放进窗口
w.show();//展示窗口
    w.setWindowTitle("running...");//修改窗口名字

return app.exec();//使程序一直执行

}
(2)修改环境变量 C:\Qt\Qt5.1.0\5.1.0\mingw48_32\bin
(3)切换地址到代码所在位置cd C:\Users\chw\Desktop\SQLite3\QTonline\qmake
(4)执行qmake -project生成qmake.pro工程文件
(5)在qmake.pro文件尾部添加QT += widgets gui语句
(6)执行qmake 生成一系列文件Makefile等

(7)执行mingw32-make

(8) 然后就可以在release文件夹看到自己写的小程序

(9)当需要对代码进行修改时,只需直接改cpp文件,然后重新执行mingw32-make即可

3.QT基本控件

32 window GW

QMidget是不带菜单的界面,QMainWindow是带菜单的

对三个代码文件进行理解
.h是头文件,定义进行设计的这个窗口所属的这个类
.cpp是头文件类的构造和析构函数
main是主函数,用来设计功能

4.信号与槽

点击按钮的动作是信号
收到信号执行的函数是槽

include "tcpclient.h"

include "ui_tcpclient.h"

///构造函数
TCPClient::TCPClient(QWidget *parent)
: QWidget(parent)//这里是默认初始化的部分
//QWidget = parent
, ui(new Ui::TCPClient)
//ui = new Ui::TCPClient
{
ui->setupUi(this);

///其他三种信号与槽的连接方式:直接写一个具有特定名称的函数///
//2、作用是将其他的信号和已经有的槽函数连接
connect(ui->lineEdit,SIGNAL(returnPressed()),this,SLOT(on_pushButton1_clicked()));
//信号来源,信号类型,信号处理者,信号处理函数
//信号处理者是处理函数所属的类,这里是on_pushButton1_clicked所属的TCPClient


//3、使用地址形式表示信号
connect(ui->pushButton2,&QPushButton::clicked,this,&TCPClient::testclose);
//connect(ui->pushButton2,&QPushButton::clicked,this,SLOT(testclose()));//不能执行
//都用槽地址可以,也可以都使用地址,但一样一个就不行


//4、当函数内容少,而且只使用一次时,可以直接写在connect里
connect(ui->pushButton3,&QPushButton::clicked,[this](){
    QMessageBox::information(this,"信息","感谢浏览!");
});
//connect(ui->lineEdit,SIGNAL(returnPressed()),[this](){
    //QMessageBox::information(this,"信息","感谢浏览!");
//});
//我测试了,不能用SIGNAL来写前一部分

}

///析构函数
TCPClient::~TCPClient()
{
delete ui;
}

///1、第一种信号与槽的连接方式:直接写一个具有特定名称的函数
void TCPClient::on_pushButton1_clicked()
{
//打开line edit 指定的界面//

//获取line edit 的数据//
QString program=ui->lineEdit->text();
//使用ui指针找到line edit 的文本数据


//创建process对象,是一个进程操作,来启动一个进程//
QProcess *myProcess =new QProcess(this);
myProcess->start(program);
//使用这个进程去启动界面,例如可以打开notepad记事本

}

///不属于特定名称的函数
void TCPClient::testclose()
{
//关闭界面//
this->close();

}

5.计算器要点,网格布局
lineEdit 可以用来显示

6.定时器
QObject类

7.线程

8.数据库

标签:控件,QT,TCPClient,语法,ui,new,include
From: https://www.cnblogs.com/atopes-chw/p/18202156

相关文章

  • 装饰器、语法糖、修复技术
    装饰器【一】什么是装饰器装饰器就是为被装饰的对象添加新的功能器--->代表工具增加后调用方式不变在不改变原函数代码和调用方式的基础上增加额外的新功能【二】装饰器的用途对上线后的程序进行新功能的增加和修改给一个功能增加新的需求或者改变原来的程序的运行逻......
  • 【C#】WPF字典资源设置Button控件样式
    <ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><Stylex:Key="BtnInfoStyle"TargetType="Button">......
  • Markdown基础语法2024测试
    标题一标题二标题三标题四标题五标题六hr加粗字体b斜体字体i引用内容code超链接ablockquoteol>li有序列表ul>li无须列表pre代码块p表格标题内容居中内容居右col3isright-aligned$1600col2iscentered$12zebrastripe......
  • MQTT详解以及实际操作
    目录1MQTT1.1MQTT介绍1.1.1简介1.1.2特点和应用1.1.3为什么要用MQTT协议1.2MQTT控制报文的结构1.2.1固定报文头(FixedHeader)1.2.2可变报文头(VariableHeader)1.2.3有效负荷和消息类型1.2.4消息质量(QoS)1.4搭建MQTT服务1.5SpringBoot搭建提供端1.5.1pom.xml1.5.2修改......
  • 整理C语言预处理过程语法的实用方法与技巧
    预处理目录预处理一、宏定义数值宏常量字符串宏常量用define宏定义注释符号?程序的编译过程预处理中宏替换和去注释谁先谁后?如何写一个不会出现问题的宏函数do-while-zero结构do-while-zero的评价宏定义中的空格宏只能在main函数上面定义吗?宏的作用范围#undef宏替换是在函数调用......
  • react中的jsx语法
    JSX是JavaScriptXML的缩写,它是一种JavaScript的语法扩展。JSX允许在JavaScript代码中编写类似于XML或HTML的标记结构,用来描述用户界面的结构。 在React应用中,开发者通常使用JSX来定义组件的结构。这样做的好处是,JSX让代码更加直观易读,并且可以轻松地在JavaS......
  • Pyqt6&PySide6 事件与事件的处理函数
    什么是事件?事件是程序收到外界的输入,处于某种状态时自动发送的信号。事件有固定的类型,每种类型有自己的处理函数,用户只要重写这些函数,即可达到特定的目的。通过事件可以用一个控件监测另外一个控件,并可过滤被监测控件发出的事件。事件的类型与处理函数事件的概念与实列外界对P......
  • PyQt5 GUI编程(组件使用)
    一.简介PyQt5是一个用于创建图形用户界面(GUI)应用程序的Python绑定,它基于Qt库。PyQt5提供了大量的组件(也称为控件或部件),用于构建复杂的用户界面。以下是一些常用的PyQt5组件二.组件用法1.数字组件(QLCDNumber)classFileChooserApp(QWidget):def__init__(self):......
  • VUE速通(10)Vue3核心语法(2)setup
    1setup概述setup是Vue3中一个新的配置项,值是一个函数,它是CompositionAPI“表演的舞台”,组件中所用到的:数据、方法、计算属性、监视......等等,均配置在setup中。特点如下:setup函数返回的对象中的内容,可直接在模板中使用。setup中访问this是undefined。setup函数会......
  • Spark_DLS语法:
    Spark_DLS语法:目录Spark_DLS语法:1.[Spark]-SQL2.DSL示例3.DSL解析json,csv文件1.printSchema()打印表结构2.studentDF.show(100)默认20条数据3.studentDF.show(false)某些值太长,完整打印每一列的数据4.DSL函数4.DataSource4.1csv:需要手动指定列名和类型4.2jsonparquet格式......