目录

软件下载

软件安装

信号和槽

connect()函数实现信号和槽

实例演示信号和槽机制

QPushButton按钮用法

QPushButton按钮的创建

QPushButton按钮的使用

QPushButton按钮的信号和槽

实例演示QPushButton按钮用法

QMessageBox用法

通用的QMessageBox消息框

1) information消息对话框

2) critical消息对话框

3) question消息对话框

4) warning消息对话框

5) about和aboutQt对话框

自定义QMessageBox对话框

QMessageBox对话框的创建

QMessageBox对话框的使用

QMessageBox的信号和槽


软件下载

1 下载QT安装包(列如下载5.13.2的windows版本的QT,网站是http://download.qt.io/archive/qt/http://download.qt.io/archive/qt/

2 下载5.13.2版本的QT的网站,(用“迅雷”,来下载,下载快!)

Index of /archive/qt/5.13/5.13.2https://download.qt.io/archive/qt/5.13/5.13.2/

下载的安装包:

软件安装

Step1: “管理员权限”运行安装包, 稍等片刻, 然后点击next.

Step2: 如果没有账号, 则选择skip,不过现在已经不允许skip了,必须先注册一个。

(或者在官网上创建QT账号,其网站为:Qt Account Loginhttps://login.qt.io/login

)

QT账号为QQ邮箱(我是用QQ邮箱的),密码是QT的密码(密码需要只是3种符合,数字、字母、其他的符合)。

在登录QT时,用QQ邮箱和QT密码。

Step4: 选择安装路径

end

信号和槽

在 Qt 中,用户和控件的每次交互过程称为一个事件,比如“用户点击按钮”是一个事件,“用户关闭窗口”也是一个事件。每个事件都会发出一个信号,例如用户点击按钮会发出“按钮被点击”的信号,用户关闭窗口会发出“窗口被关闭”的信号。

Qt 中的所有控件都具有接收信号的能力,一个控件还可以接收多个不同的信号。对于接收到的每个信号,控件都会做出相应的响应动作。例如,按钮所在的窗口接收到“按钮被点击”的信号后,会做出“关闭自己”的响应动作;再比如输入框自己接收到“输入框被点击”的信号后,会做出“显示闪烁的光标,等待用户输入数据”的响应动作。在 Qt 中,对信号做出的响应动作就称为槽。

信号和槽机制底层是通过函数间的相互调用实现的。每个信号都可以用函数来表示,称为信号函数;每个槽也可以用函数表示,称为槽函数。例如,“按钮被按下”这个信号可以用 clicked() 函数表示,“窗口关闭”这个槽可以用 close() 函数表示,信号和槽机制实现“点击按钮会关闭窗口”的功能,其实就是 clicked() 函数调用 close() 函数的效果。

信号函数和槽函数通常位于某个类中,和普通的成员函数相比,它们的特别之处在于:

  • 信号函数用  signals 关键字修饰,槽函数用 public slots、protected slots 或者 private slots 修饰。signals 和 slots 是 Qt 在 C++ 的基础上扩展的关键字,专门用来指明信号函数和槽函数;
  • 信号函数只需要声明,不需要定义(实现),而槽函数需要定义(实现)。

connect()函数实现信号和槽

connect() 是 QObject 类中的一个静态成员函数,专门用来关联指定的信号函数和槽函数。

关联某个信号函数和槽函数,需要搞清楚以下 4 个问题:

  • 信号发送者是谁?
  • 哪个是信号函数?
  • 信号的接收者是谁?
  • 哪个是接收信号的槽函数?

仍以实现“按下按钮后窗口关闭”为例,先创建一个窗口和一个按钮,如下所示:

QWidget widget;
//定义一个按钮,它位于 widget 窗口中
QPushButton But("按钮控件",&widget);

信号发送者是 But 按钮对象,要发送的信号是“按钮被点击”,可以用 QPushButton 类提供的 clicked() 信号函数表示;信号的接收者是 widget 主窗口对象,“窗口关闭”作为信号对应的槽,可以用 QWidget 类提供的 close() 函数表示。

在 Qt5 版本之前,connect() 函数最常用的语法格式是:

QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)

各个参数的含义分别是:

  • sender:指定信号的发送者;
  • signal:指定信号函数,信号函数必须用 SIGNAL() 宏括起来;
  • reveiver:指定信号的接收者;
  • method:指定接收信号的槽函数,槽函数必须用 SLOT() 宏括起来;
  • type 用于指定关联方式,默认的关联方式为 Qt::AutoConnection,通常不需要手动设定。

用 connect() 函数将 But 按钮的 clicked() 信号函数和 widget 窗口的 close() 槽函数关联起来,实现代码如下:

connect(&But, SIGNAL(clicked()), &widget, SLOT(close()));如此就实现了“按下按钮会关闭窗口”的功能。

Qt5 版本中,connect() 函数引入了新的用法,常用的语法格式是:

QObject::connect(const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type = Qt::AutoConnection)

和旧版本相比,新版的 connect() 函数改进了指定信号函数和槽函数的方式,不再使用  SIGNAL() 和 SLOT() 宏。

例如,用新版 connect() 函数关联 But 按钮的 clicked() 信号函数和 widget 窗口的 close() 槽函数,实现代码为:

connect(&But, &QPushButton::clicked, &widget, &QWidget::close);

可以看到,新版 connect() 函数指定信号函数和槽函数的语法格式是  &+函数所在类+函数名

一个 connect() 函数只能关联一个信号函数和一个槽函数,程序中可以包含多个 connect() 函数,能实现以下几种效果:

  • 关联多个信号函数和多个槽函数;
  • 一个信号函数可以关联多个槽函数,当信号发出时,与之关联的槽函数会一个接一个地执行,但它们执行的顺序是随机的,无法人为指定哪个先执行、哪个后执行;
  • 多个信号函数可以关联同一个槽函数,无论哪个信号发出,槽函数都会执行。

此外,connect() 函数的 method 参数还可以指定一个信号函数,也就是说,信号之间也可以相互关联,这样当信号发出时,会随之发出另一个信号。

实例演示信号和槽机制

创建一个不含 ui 文件的 Qt Widgets Application 项目,只保留 main.cpp 源文件,删除 mainwindow.h 和 mainwindow.cpp 文件。在 main.cpp 文件中编写如下代码:

//实例演示信号和槽机制
#include <QApplication>
#include <QWidget>
#include <QPushButton>//在有中文代码的头文件中添加如下代码,解决中文乱码的问题。
#pragma execution_character_set("utf-8")int main(int argc, char *argv[])
{QApplication a(argc, argv);QWidget widget;//添加窗口//定义一个按钮,它位于 widget 窗口中QPushButton But("按钮控件",&widget);//设置按钮的位置和尺寸But.setGeometry(20,40,500,50);//信号与槽,实现当用户点击按钮时,widget 窗口关闭QObject::connect(&But,&QPushButton::clicked, &widget,&QWidget::close);//让 widget 窗口显示widget.show();return a.exec();
}

QPushButton按钮用法

按钮是 GUI 开发中最常用到的一种控件,作为一款著名的 GUI 开发框架,Qt 提供了很多种按钮,比如 QPushButton(普通按钮)、QRadioButton(单选按钮)、QToolButton(工具栏按钮)等。

QPushButton按钮的创建

QPushButton 类间接继承自 QWidget 类,它的继承关系如下:

QPushButton -> QAbstractButton -> QWidget

QAbstractButton 类是所有按钮控件类的基类,包含很多通用的按钮功能。
QPushButton 类专门用来创建可按压的按钮.

QPushButton 类提供了 3 个构造函数,分别是:

QPushButton(QWidget *parent = Q_NULLPTR)
QPushButton(const QString &text, QWidget *parent = Q_NULLPTR)
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = Q_NULLPTR)

parent 参数用于指定父窗口;

text 参数用于设置按钮上要显示的文字;

icon 参数用于设置按钮上要显示的图标。

注意,第一个构造函数的 parent 参数附有默认值,所以 QPushButton 类还隐含着一个默认构造函数。也就是说,实例化 QPushButton 类对象时可以不传递任何参数。

QPushButton按钮的使用

QPushButton 类提供了很多实用的属性和方法,它还从父类继承了很多属性和方法。下表罗列了一些比较常用的属性和方法:

表 1 QPushButton常用属性

属 性 含 义
text

保存按钮上要显示的文字。

该属性的值可以通过 text() 方法获取,也可以通过 setText(const QString &text) 方法修改。

icon

保存按钮左侧要显示的图标。

该属性的值可以通过 icon() 方法获取,也可以通过 setIcon(const QIcon &icon) 方法修改。

iconsize 保存按钮左侧图标的尺寸。

该属性的值可以通过 iconSize() 方法获取,也可以通过 setIconSize(const QSize &size) 方法修改。

size 保存按钮的尺寸。

该属性的值可以通过 size() 方法获取,也可以通过 resize(int w, int h) 或者 resize(const QSize &) 方法修改。

font 保存按钮上文字的字体和大小。

该属性的值可以通过 font() 方法获取,也可以通过 setFont(const QFont &) 方法修改。

flat 初始状态下,按钮是否显示边框。flat 属性的默认值为 flase,表示按钮带有边框。

该属性的值可以通过 isFlat() 方法获取,也可以通过 setFlat(bool) 方法修改。

enabled 指定按钮是否可以被按下。

该属性的默认值为 true,表示按钮可以被按下,即按钮处于启用状态。当该属性的值为 false 时,按钮将不能被点击,按钮处于禁用状态。

该属性的值可以通过 isEnabled() 方法获取,也可以通过 setEnabled(bool) 方法进行修改。

autoDefault 当用户按下 Enter 回车键时,是否触发点击按钮的事件。

当按钮的父窗口为 QDialog 窗口时,该属性的值为 true;其它情况下,该属性的默认值为 false。

该属性的值可以通过 autoFault() 方法获取,也可以通过 setAutoFault(bool) 方法修改。

表 2 QPushButton常用方法

方 法

功 能

move(int x, int y)

手动指定按钮位于父窗口中的位置。

setStyleSheet(const QString &styleSheet)

自定义按钮的样式,包括按钮上文字或图片的显示效果,按钮的形状等等。

setGeometry(int x, int y, int w, int h)

同时指定按钮的尺寸和位置。

adjustSize()

根据按钮上要显示的内容,自动调整按钮的大小。

setDisabled(bool disable)

指定按钮是否可以被按下。当 disable 值为 true 时,表示按钮不能被按下,即禁用按钮的功能。

QPushButton按钮的信号和槽

GUI 程序中,按钮的主要任务是完成和用户之间的交互,下表罗列了 QPushButton 类常用的信号函数和槽函数:

表 3 QPushButton信号和槽

信号函数 功 能
clicked()
clicked(bool checked = false)
用户点击按钮并释放(或者按下按钮对应的快捷键)后,触发此信号。
pressed() 用户按下按钮时会触发此信号。
released() 用户松开按钮时会触发此信号。
槽函数 功 能
click() 单击指定的按钮。
setIconSize() 重新设置按钮上图片的尺寸。
hide() 隐藏按钮控件。
setMenu(QMenu *menu) 弹出与按钮关联的菜单。

实例演示QPushButton按钮用法

//Qt,QPushButton按钮用法
#include <QApplication>
#include <QWidget>
#include <QPushButton>//在有中文代码的头文件中添加如下代码,解决中文乱码的问题。
#pragma execution_character_set("utf-8")int main(int argc,char *argv[])
{QApplication a(argc,argv);QWidget widget;//设置 widget 窗口的标题widget.setWindowTitle("小尾羊的窗口");widget.resize(400,300);//创建一个按钮,并内嵌到 widget 窗口中QPushButton But("马斯洛",&widget);But.setGeometry(0,20,300,50);//创建一个按钮,并内嵌到 widget 窗口中QPushButton but1("稀奇古怪",&widget);but1.move(20,70);    //按钮的位置位于距 widget 窗口左上角 (100,100) 的位置but1.setStyleSheet("QPushButton{font:20px;}"); //设置按钮上文字的大小。but1.resize(100,50); //调整按钮的尺寸//建立信息和槽,当用户点击并释放按钮后,该按钮隐藏。QObject::connect(&but1,&QPushButton::clicked,&but1,&QPushButton::hide);widget.show();return  a.exec();
}

QMessageBox用法

很多 GUI 程序都会用到消息对话框,且很多场景中使用的消息对话框是类似的,唯一的区别只是提示信息不同。为了提高程序员的开发效率,避免重复地“造轮子”,Qt 开发者设计好了几种通用的 QMessageBox 消息对话框,需要时可以直接使用。

通用的QMessageBox消息框

Qt 提供了 6 种通用的 QMessageBox 消息对话框,通过调用 QMessageBox 类中的 6 个静态成员方法,可以直接在项目中使用它们。

1) information消息对话框

information 对话框常用于给用户提示一些关键的信息,它的外观如下图所示:

在项目中使用 information 消息对话框,直接调用 QMessageBox 类中的 information() 静态成员方法即可,该方法的语法格式如下:

StandardButton QMessageBox::information(QWidget *parent,const QString &title,const QString &text,StandardButtons buttons = Ok,StandardButton defaultButton = NoButton)

各个参数的含义是:

  • parent:指定消息对话框的父窗口,消息提示框会作为一个独立的窗口显示在父窗口的前面。消息提示框从弹出到关闭的整个过程中,用户无法操作父窗口,更不能删除父窗口;
  • title:指定消息对话框的标题,即图 2 中的 Titile;
  • text:指定消息对话框的具体内容,即图 2 中的 text;
  • buttons:指定消息对话框中包含的按钮。默认情况下,消息对话框只包含一个按钮,即图 2 中显示的 "OK" 按钮。根据需要,我们可以用|按位或运算符在消息对话框中设置多个按钮,例如 QMessageBox::Ok|QMessageBox::Cancel
  • defaultButton:指定 Enter 回车键对应的按钮,用户按下回车键时就等同于按下此按钮。注意,defaultButton 参数的值必须是 buttons 中包含的按钮,当然也可以不手动指定,QMessageBox 会自动从 buttons 中选择合适的按钮作为 defaultButton 的值。

information() 函数会返回用户按下的按钮。StandardButton 是 QMessageBox 类中定义的枚举类型,每个枚举值代表一种按钮。StandardButton 类型中的值有很多,下表罗列了几个常用的:

表 1 QMessageBox::StandardButton 枚举类型值

枚举值 含 义
QMessageBox::Ok 标有 "OK" 字样的按钮,通常用来表示用户接受或同意提示框中显示的信息。
QMessageBox::Open 标有 "Open" 字样的按钮。
QMessageBox::Save 标有 "Save" 字样的按钮。
QMessageBox::Cancel 标有 "Cancel" 字样的按钮。点击此按钮,通常表示用户拒绝接受提示框中显示的信息。
QMessageBox::Close 标有 "Close" 字样的按钮。
QMessageBox::Discard 标有 "Discard" 或者 "Don't Save" 字样的按钮,取决于运行平台。
QMessageBox::Apply 标有 "Apply" 字样的按钮。
QMessageBox::Reset 标有 "Reset" 字样的按钮。
QMessageBox::Yes 标有 "Yes" 字样的按钮。
QMessageBox::No 标有 "No" 字样的按钮。

例如,使用 information() 函数实现图 2 所示的对话框,实现代码为:

QMessageBox::StandardButton result = QMessageBox::information(&widget, "Title","text");

其中,widget 是我们创建好的 QWidget 窗口,创建好的 information 对话框会显示在 widget 窗口的前面。通过用 result 接收 information() 函数的返回值,我们可以得知用户选择的是哪个按钮。

2) critical消息对话框

critical 消息对话框常用于给用户提示“操作错误”或“运行失败”的信息,它的外观如下图所示:

项目中使用 critical 消息对话框,直接调用 QMessageBox 类提供的 critical() 静态成员方法即可,该方法的语法格式为:

StandardButton QMessageBox::critical(QWidget *parent,const QString &title,const QString &text,StandardButtons buttons = Ok,StandardButton defaultButton = NoButton)

例如,使用 critical() 函数实现图 3 所示的对话框,实现代码为:

QMessageBox::StandardButton result=QMessageBox::critical(&widget, "Title","text");

其中,widget 是我们创建好的 QWidget 窗口,创建好的 critical 对话框会显示在 widget 窗口的前面。

3) question消息对话框

question 对话框常用于向用户提出问题并接收用户的答案,它的外观如下图所示:

项目中使用 question 对话框,可以直接调用 QMessageBox 类的 question() 静态成员方法,该方法的语法格式为:

StandardButton QMessageBox::question(QWidget *parent,const QString &title,const QString &text,StandardButtons buttons = StandardButtons( Yes | No ),StandardButton defaultButton = NoButton)

例如,使用 question() 函数实现图 4 所示的对话框,实现代码为:

QMessageBox::StandardButton result=QMessageBox::question(&widget, "Title","text");

其中,widget 是我们创建好的 QWidget 窗口,创建好的 question 对话框会显示在 widget 窗口的前面。

4) warning消息对话框

warining 对话框常用于向用户显示一些警告信息,它的外观如下图所示:

项目中使用 warning 对话框,可以直接调用 QMessageBox 类的 warning() 静态成员方法,该方法的语法格式为:

StandardButton QMessageBox::warning(QWidget *parent,const QString &title,const QString &text,StandardButtons buttons = Ok,StandardButton defaultButton = NoButton)

例如,使用 warning() 函数实现图 5 所示的对话框,实现代码为:

QMessageBox::StandardButton result=QMessageBox::warning(&widget, "Title","text");

其中,widget 是我们创建好的 QWidget 窗口,创建好的 warning 对话框会显示在 widget 窗口的前面。

5) about和aboutQt对话框

about 对话框常常作为介绍某个产品或某项功能的临时窗口,它的外观如下图所示:

注意,about 对话框没有固定的图标,它显示的图标可能来自父窗口、包含父窗口的顶层窗口等,也可能使用和 information 对话框相同的图标。

项目中使用 about 对话框,直接调用 QMessageBox 类提供的 about() 静态成员方法即可,该方法的语法格式如下:

void QMessageBox::about(QWidget *parent, const QString &title, const QString &text)

各个参数的含义和与 information() 函数相同。和前面的几种对话框不同,about对话框中只包含一个默认的 Ok 按钮,且 about() 函数没有返回值。

自定义QMessageBox对话框

以上 6 种通用的 QMessageBox 对话框,界面上的图片无法修改,按钮上的文字也无法修改(例如无法将 OK、No 改成中文)。如果想修改它们,就需要自定义一个 QMessageBox 对话框。

QMessageBox对话框的创建

程序中创建 QMessageBox 对象,必须先引入<QMessageBox>头文件。QMessageBox 类提供了两个构造函数,分别是:

QMessageBox::QMessageBox(QWidget *parent = Q_NULLPTR)
QMessageBox::QMessageBox(Icon icon,const QString &title,const QString &text,StandardButtons buttons = NoButton,QWidget *parent = Q_NULLPTR,Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint)

第一个构造函数可以创建一个“空白”对话框,即对话框中不包含任何文本和按钮。当然,通过调用 QMessageBox 类提供的成员方法,可以向“空白”对话框中添加各种元素(图标、文本、按钮等)。

第二个构造函数中,各个参数的含义是:

  • icon:指定对话框中的图片。Icon 是 QMessageBox 类中定义的枚举类型,内部包含 QMessageBox::NoIcon、QMessageBox::Question、QMessageBox::Information、QMessageBox::Warning、QMessageBox::Critical 几个值,分别表示:不指定图片、question对话框的图片(图 4)、information对话框的图片(图 2)、warning对话框的图片(图 5)、critical对话框的图片(图 3)。
  • title:指定对话框的标题;
  • text:指定对话框中显示的文本信息;
  • buttons:指定对话框中包含的的按钮,可选值如表 1 所示。
  • parent:指定对话框的父窗口;
  • f:指定对话框的属性。WindowFlags 是 Qt 提供的枚举类型,内部包含的值有很多,有的用来指定对话框的用途(比如 Qt::Dialog 表示对话框窗口),有的用来指定对话框的外观(比如 MSWindowsFixedSizeDialogHint 表示给对话框添加一个细的边框)
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QMessageBox>
#include <QAbstractButton>
#include <QDebug>//在有中文代码的头文件中添加如下代码,解决中文乱码的问题。
#pragma execution_character_set("utf-8")int main(int argc, char *argv[])
{QApplication a(argc, argv);//创建 QMessageBox 类对象QMessageBox MyBox(QMessageBox::Question,"Title12","text12",QMessageBox::Yes|QMessageBox::No);//使 MyBox 对话框显示MyBox.exec();return a.exec();
}

程序中创建了一个 MyBox 对话框,通过调用 QMessageBox 提供的 exec() 方法,可以使 MyBox 对话框弹出。运行程序可以发现,MyBox 对话框的外观和图 4 的 question 对话框完全一样。

QMessageBox对话框的使用

QMessageBox 类提供了很多功能实用的成员方法,方便我们快速地制作出实际场景需要的对话框。

下表罗列了常用的一些 QMessageBox 类成员方法:

表 2 QMessageBox 常用成员方法

成员方法 功 能
void QMessageBox::setWindowTitle(const QString &title) 设置对话框的标题。
void setText(const QString &text) 设置对话框中要显示的文本。
void setIconPixmap(const QPixmap &pixmap) 设置对话框中使用的图片。
QAbstractButton *QMessageBox::clickedButton() const 返回用户点击的按钮。
QPushButton *QMessageBox::addButton(const QString &text, ButtonRole role) 向对话框中添加按钮,text 为按钮的文本,role 是 QMessageBox::ButtonRole 枚举类型的变量,用于描述按钮扮演的角色,它的可选值有 QMessageBox::AcceptRole(同 OK 按钮)、QMessageBox::RejectRole(同 Cancel 按钮)等。
int QMessageBox::exec()

使当前对话框弹出,除非用户关闭对话框,否则对话框将一直存在。此外,当对话框中使用的都是 Qt 提供的按钮时,该方法可以监听用户点击的是哪个按钮,并将该按钮对应的枚举值返回;如果对话框中包含自定义按钮,需要借助 clickedButton() 方法确定用户点击的按钮。

举个简单的例子:

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QMessageBox>
#include <QAbstractButton>
#include <QDebug>//在有中文代码的头文件中添加如下代码,解决中文乱码的问题。
#pragma execution_character_set("utf-8")int main(int argc, char *argv[])
{QApplication a(argc, argv);QMessageBox MBox;MBox.setWindowTitle("吱吱吱");MBox.setText("你同意吗???");MBox.setIconPixmap(QPixmap("C:\\Users\\thi\\Desktop\\Cppproject\\QTtest001\\qttest001\\lzydzp.png"));QPushButton *agreeBut = MBox.addButton("同意", QMessageBox::AcceptRole);MBox.exec();if (MBox.clickedButton() == (QAbstractButton*)agreeBut){//在 Qt Creator 的输出窗口中输出指定字符串qDebug() << "用户点击了同意按钮";}return a.exec();
}

QMessageBox的信号和槽

操作 QMessageBox 对话框,最常用的信号函数是 buttonClicked() 函数,最常用的槽函数是 exec() 函数,它们的语法格式和功能如下表所示。

表 3 QMessageBox信号和槽

信号函数 功 能
void QMessageBox::buttonClicked(QAbstractButton *button) 当用户点击对话框中的某个按钮时,会触发此信号函数,该函数会将用户点击的按钮作为参数传递给槽函数。
槽函数 功 能
int QMessageBox::exec() 弹出对话框,直到用户手动关闭对话框,此对话框将一直存在。

小尾羊的qt学习之路,01课,基础芝士相关推荐

  1. 小尾羊的qt学习之路,01课,按钮

    目录 Qt7:QPushButton Class (按钮) 提问:联合.枚举.类型别名 Qt8:QLineEdit Class (文本输入框) Qt9:QCheckBox Class (复选框) Qt ...

  2. Qt学习之路_12(简易数据管理系统)

    原文地址为: Qt学习之路_12(简易数据管理系统) 前言 最近从大陆来到台湾,之间杂事很多,挤不出时间来更新博客- 这次主要是通过做一个简易的数据库管理系统,来学习在Qt中对数据库,xml,界面的各 ...

  3. 转载: Qt 学习之路 2归档

    Qt 学习之路 2归档 http://www.devbean.net/2012/08/qt-study-road-2-catelog/

  4. 对QT学习之路12-14的源代码补充与修正

    QT学习之路12-14的源代码有些不完整,为了更好的让大家学习,本人做了一点修正与补充,谢谢.源代码如下: 头文件: #ifndef MAINWINDOW_H #define MAINWINDOW_H ...

  5. java qt gui_工控编程,Qt 学习之路

    原标题:工控编程,Qt 学习之路 Qt 是一个著名的 C++ 库--或许并不能说这只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI.使用 Qt,在一定程序上你获得的是一个"一站 ...

  6. QT学习之路2 学习笔记

    QT学习之路2 学习笔记 1.Qt 是一个著名的 C++ 应用程序框架.你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件.使用 Qt,在一定程度上你获得的是一个&quo ...

  7. 《Qt 学习之路 2》

    Home / Qt 学习之路 2 / <Qt 学习之路 2>目录 <Qt 学习之路 2>目录 序 Qt 前言 Hello, world! 信号槽 自定义信号槽 Qt 模块简介 ...

  8. QT学习之路(一)ubuntu 18.04的Qt Creator在线安装

    文章目录 前言 一.准备工作 二.安装步骤 参考链接 前言 Qt是嵌入式开发的必备工具之一,在Linux下安装尤其重要. Qt是C++的一个库,或者说是开发框架,里面集成了一些库函数,提高开发效率. ...

  9. Qt学习之路(24): QPainter(改写paintEvent)

    Qt学习之路(24): QPainter(改写paintEvent) 多些大家对我的支持啊!有朋友也提出,前面的几节有关event的教程缺少例子.因为event比较难做例子,也就没有去写,只是把大概写 ...

最新文章

  1. 《大数据导论》——1.4节案例学习背景
  2. 命令行选项解析函数:getopt()
  3. b区计算机调剂学校,2021年b区研究生调剂院校有哪些
  4. php 开启mail函数 wo,php mail 函数发送邮件
  5. Git pull 错误:fatal: refusing to merge unrelated histories解决办法
  6. C++(STL):31 ---关联式容器map源码剖析
  7. 老板催你交圣诞海报设计?PSD源文件素材,直接编辑
  8. python 捕获多个异常_Python捕获多个异常
  9. 3D VR卡镜的使用方法
  10. windows10中安装anaconda和pytorch
  11. k8s serviceAccountName填写后应用没有进行挂载问题处理
  12. 《工程伦理与学术道德》第三章习题
  13. 老马闲评数字化(4)做数字化会不会被供应商拿捏住
  14. 微信程序开发小程序交互
  15. [转载]只需要读内存实现的Dota全图
  16. python 学习简记 《编程导论》 CH4CH5
  17. MapGuide 和 Google Map
  18. 爬虫实战 | 手把手用Python教你采集可视化知乎问题的回答(内附代码)
  19. Qt5生成Word格式报告
  20. 中国社会追踪调查数据CGSS区县码(最全版本)

热门文章

  1. 提取惠普ZBook 15 G2笔记本电脑内建显示器的EDID并修改注入Clover完美驱动内屏实现内外双屏显示
  2. 微信小程序短视频去水印,王者查战力,手持弹幕,获取头像壁纸,工具箱源码
  3. C++程序设计原理与实践 习题答案 第十六章 第16章习题答案
  4. Boosting 族 ——AdaBoost全解
  5. 整体功能大于部分功能之和_功能性思考,第2部分
  6. 求一元二次方程ax2+bx+c=0的根
  7. matlab中软开关,数字化软开关电源的Matlab仿真研究
  8. 【C语言程序】利用‘*‘打印出“HELLO”的形状
  9. R6025 pure virtual function call
  10. linux yum安装erlang,在 CentOS 5.7 上通过 YUM 安装 Erlang 过程