Qt基础知识
@蓝枫
这个作者很懒,什么都没留下…
展开
-
QDesktopServices常用用法 - 打开外部网页或文件(夹)
许多桌面环境提供的服务可供应用程序用于执行常见任务,例如打开网页,其方式既一致又考虑到用户的应用程序偏好。此类包含为这些服务提供简单接口的函数,这些接口指示它们是成功还是失败。openUrl() 函数用于打开位于外部应用程序中任意 URL 的文件。 对于与本地文件系统上的资源对应的 URL(其中 URL 方案为“文件”),将使用合适的应用程序打开文件; 否则,将使用 Web 浏览器来获取和显示文件。用户的桌面设置控制是否打开某些可执行文件类型进行浏览,或者是否执行它们。 一些桌面环境被配置为阻止用户执原创 2022-03-10 19:46:25 · 1650 阅读 · 0 评论 -
QProgressDialog使用方法
#ifndef WIDGET_H#define WIDGET_H#include <QtWidgets/QWidget>#include <QProgressDialog>#include <QTimer>#include <QDebug>#include <QPushButton>class Widget : public QWidget{ Q_OBJECT QPushButton m_testBt.原创 2021-12-17 22:01:55 · 1818 阅读 · 2 评论 -
QStackedWidget和QTabBar组合使用方法
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QStackedWidget>#include <QTabBar>#include <QLabel>#include <QDebug>#include <QString>#include <QTextEdit>#include <QVBoxLayout>#include .原创 2021-12-17 15:10:03 · 482 阅读 · 0 评论 -
QStackedWidget和QListWidget组合使用方法
QStackedWidget 类提供了一堆小部件,其中一次只能看到一个小部件。QStackedWidget 可用于创建类似于 QTabWidget 提供的用户界面。 它是一个构建在 QStackedLayout 类之上的便捷布局小部件。#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QStackedWidget>#include <QLabel>#include <QDebu原创 2021-12-17 14:16:13 · 1089 阅读 · 0 评论 -
QSplitter使用方法
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QSplitter>#include <QTextEdit>#include <QPlainTextEdit>#include <QPushButton>class Widget : public QWidget{ Q_OBJECT QSplitter m_MainSplitter; .原创 2021-12-17 10:03:30 · 137 阅读 · 0 评论 -
Qt常用容器遍历 - QList和QMap
QList遍历 QList<int> list; list << 1 << 2 << 3 << 4 << 5; qDebug() << "QList第一种遍历"; QList<int>::iterator it1 = list.begin(); for(; it1!=list.end(); ++it1) { qDe.原创 2021-12-16 20:26:15 · 8388 阅读 · 1 评论 -
Qt - 多线程与界面组件的通信
先上代码:#ifndef MYTHREAD_H#define MYTHREAD_H#include <QThread>#include <QtCore/QObject>class MyThread : public QThread{ Q_OBJECTsignals: void uiSignal(QString msg); protected: void run(); public: explicit MyThread(原创 2021-12-01 20:47:37 · 502 阅读 · 0 评论 -
Qt中release打包发行命令windeployqt使用方法
把release版本编译生成的XXX.exe,单独放在一个新建一个文件夹,然后打开QT的命令终端Qt 5.12.12 (MinGW 7.3.0 32-bit),使用cd命令进入到新建的文件夹路径原创 2021-12-01 15:30:21 · 939 阅读 · 0 评论 -
Qt - 另一种创建线程的方法
#ifndef ANOTHERTHREAD_H#define ANOTHERTHREAD_H#include <QObject>#include <QThread>class AnotherThread : public QObject{ Q_OBJECT QThread m_thread;protected slots: void tmain();public: explicit AnotherThread(QObject *p.原创 2021-11-28 13:16:14 · 119 阅读 · 0 评论 -
Qt - 线程的生命周期问题
工程设计准则线程对象的生命周期 > 对应的线程生命周期同步型线程设计#ifndef SYNCTHREAD_H#define SYNCTHREAD_H#include <QThread>class SyncThread : public QThread{ Q_OBJECTprotected: void run();public: explicit SyncThread(QObject *parent =...原创 2021-11-28 10:34:32 · 542 阅读 · 0 评论 -
Qt - 信号与槽的连接方式
信号与槽的连接方式主要有以下5种方式:先看代码:#ifndef MYOBJECT_H#define MYOBJECT_H#include <QObject>class MyObject : public QObject{ Q_OBJECTpublic: explicit MyObject(QObject *parent = 0); signals: protected slots: void testSlot();}.原创 2021-11-27 23:45:22 · 1499 阅读 · 0 评论 -
Qt - 多线程中的信号与槽
先看代码和运行效果图,如下:#ifndef MYOBJECT_H#define MYOBJECT_H#include <QObject>class MyObject : public QObject{ Q_OBJECTpublic: explicit MyObject(QObject *parent = 0); protected slots: void getStarted(); void testSlot();};#end原创 2021-11-27 22:22:50 · 716 阅读 · 0 评论 -
Qt中银行家算法实现 - 多线程应用
算法策略 将资金优先借予资金需求较少的客户 应用场景 操作系统内核中的进程管理 数据库内核中的频繁事物管理 Qt中的算法实现方案 使用多线程机制模拟客户和银行 银行优先分配资源给最小需求的客户 当客户的资源需求无法满足的时候 收回已分配的资源 强制结束线程 代码实现:#include <QCoreApplication>#include <QThread>#include <QMutex>#include <原创 2021-11-25 23:55:16 · 440 阅读 · 0 评论 -
QPainter使用总结
void Widget::paintEvent(QPaintEvent* event){ Q_UNUSED(event); //第一种 QPainter painter1(this); painter1.save();//保存绘制状态 painter1.setPen(Qt::blue); painter1.drawLine(QPoint(10, 10), QPoint(20, 20)); painter1.restore();/.原创 2021-11-08 20:28:05 · 117 阅读 · 0 评论 -
QPainter文本绘制
效果图:源码:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QPainter>#include <QFontMetrics>#include <QPen>#include <QFont>#include <QTimer>class Widget : public QWidget{ Q_OBJECT uns.原创 2021-11-08 20:22:45 · 360 阅读 · 0 评论 -
QImage和QPixmap的使用
QImage 是为 I/O 以及直接像素访问和操作而设计和优化的,而 QPixmap 是为在屏幕上显示图像而设计和优化的。源码分享:void Widget::OnloadClicked(){ QFileDialog dialog(this); dialog.setAcceptMode(QFileDialog::AcceptOpen); dialog.setFileMode(QFileDialog::ExistingFile); if(..原创 2021-11-07 10:13:27 · 488 阅读 · 0 评论 -
简易图形绘制
源码分析int Widget::drawType(){ int ret = NONE; if(m_freeBtn.isChecked()) ret = FREE; if(m_lineBtn.isChecked()) ret = LINE; if(m_rectBtn.isChecked()) ret = RECT; if(m_ellipseBtn.isChecked()) ret = ELLIPSE; retu...原创 2021-11-07 08:16:26 · 56 阅读 · 0 评论 -
Qt基础图形绘制2
世界坐标:也叫逻辑坐标,使用的单位叫做逻辑单位,是人类世界中的坐标,如北京在地图中的坐标为(700km,899km)。这种坐标系统可大可小,大可至几万千米,小至几毫米,随你设置,该系统中坐标大小与显示设备大小无关。一般来说,逻辑坐标系在左下角,正X轴向又,正Y轴向上。窗口坐标:窗口坐标和世界坐标其实没有太大区别,都使用逻辑坐标进行表示。只是世界坐标和窗口坐标之间可能会存在一些变换,如平移、缩放、旋转、扭曲。设备坐标:也叫物理坐标,原点在左上角,正X轴向右,正Y轴向下,显示器中,坐标单位通常为像素,.原创 2021-11-04 07:33:39 · 503 阅读 · 0 评论 -
Qt基础图形绘制1
QPainter 类在小部件和其他绘画设备上执行低级绘画。QPainter 提供高度优化的功能来完成大多数绘图 GUI 程序所需的工作。 它可以绘制从简单线条到复杂形状(如馅饼和和弦)的所有内容。 它还可以绘制对齐的文本和像素图。 通常,它在“自然”坐标系中绘制,但它也可以进行视图和世界变换。 QPainter 可以对任何继承 QPaintDevice 类的对象进行操作。画家由 begin() 函数和接受 QPaintDevice 参数的构造函数激活。 end() 函数和析构函数将其停用。当pain.原创 2021-11-03 23:09:40 · 128 阅读 · 0 评论 -
Qt模型视图中委托深入分析
项目一:源码分析:void CustomizedItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const{ if(2 == index.column()) { const int Delta = 4; int x = option.rect.x() + Delta;原创 2021-10-31 10:09:14 · 255 阅读 · 0 评论 -
模型视图中的委托
QAbstractItemDelegate 类用于显示和编辑模型中的数据项。QAbstractItemDelegate 为模型/视图架构中的委托提供接口和通用功能。 委托在视图中显示单个项目,并处理模型数据的编辑。QAbstractItemDelegate 类是模型/视图类之一,是 Qt 模型/视图框架的一部分。要以自定义方式呈现项目,您必须实现paint() 和sizeHint()。 QItemDelegate 类为这些函数提供了默认实现; 如果您不需要自定义渲染,请改为对该类进行子类化。..原创 2021-10-30 21:09:10 · 90 阅读 · 0 评论 -
Qt模型视图 - 自定义模型类
创建个人信息类:#ifndef PERSONINFOMODEL_H#define PERSONINFOMODEL_H#include <QObject>#include <PersonInfo.h>#include <QList>#include <QTableView>#include <QStandardItemModel>#include <QStandardItem>class PersonInfoMo原创 2021-10-24 21:52:35 · 1427 阅读 · 0 评论 -
Qt中QFileSystemModel例子
QFileSystemModel 类为本地文件系统提供数据模型。此类提供对本地文件系统的访问,提供重命名和删除文件和目录以及创建新目录的功能。 在最简单的情况下,它可以与合适的显示小部件一起使用,作为浏览器或过滤器的一部分。源码:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QFileSystemModel>#include <QTreeView>#include &l.原创 2021-10-24 16:03:22 · 1322 阅读 · 0 评论 -
Qt中的QGridLayout使用方法
QGridLayout 类在网格中布置小部件。QGridLayout 获取可用的空间(通过其父布局或 parentWidget()),将其划分为行和列,并将其管理的每个小部件放入正确的单元格中。列和行的行为相同;我们将讨论列,但行也有等价的函数。每列都有一个最小宽度和一个拉伸因子。最小宽度是使用 setColumnMinimumWidth() 设置的最大宽度和该列中每个小部件的最小宽度。拉伸因子使用 setColumnStretch() 设置,并确定列将获得多少可用空间超过其必要的最小值。通常,使.原创 2021-10-20 17:32:32 · 3425 阅读 · 0 评论 -
Qt中QGridLayout使用方法
QGridLayout 类在网格中布置小部件。QGridLayout 获取可用的空间(通过其父布局或 parentWidget()),将其划分为行和列,并将其管理的每个小部件放入正确的单元格中。列和行的行为相同;我们将讨论列,但行也有等价的函数。每列都有一个最小宽度和一个拉伸因子。最小宽度是使用 setColumnMinimumWidth() 设置的最大宽度和该列中每个小部件的最小宽度。拉伸因子使用 setColumnStretch() 设置,并确定列将获得多少可用空间超过其必要的最小值。通常,使用原创 2021-10-23 09:30:44 · 7444 阅读 · 1 评论 -
Qt中布局管理器QFormLayout
QFormLayout 类管理输入小部件的表单及其关联的标签。QFormLayout 是一个方便的布局类,它以两列形式布置其子项。 左列由标签组成,右列由“字段”小部件(行编辑器、旋转框等)组成。#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QLineEdit>#include <QFormLayout>#include <QDebug>#include <Q原创 2021-10-19 23:30:00 · 276 阅读 · 0 评论 -
Qt中QLocale的使用
QLocale 类在各种语言的数字及其字符串表示之间进行转换。QLocale 在其构造函数中使用语言/国家对进行初始化,并提供类似于 QString 中的数字到字符串和字符串到数字的转换功能。QLocale 支持默认语言环境的概念,该概念由应用程序启动时系统的语言环境设置确定。 可以通过调用静态成员 setDefault() 来更改默认语言环境。 设置默认语言环境有以下效果:如果 QLocale 对象是用默认构造函数构造的,它将使用默认语言环境的设置。 QString::toInt()、QSt原创 2021-10-19 22:15:00 · 3005 阅读 · 0 评论 -
Qt中的QBuffer和QDataStream分析
QBuffer 类为 QByteArray 提供 QIODevice 接口。QBuffer 允许您使用 QIODevice 接口访问 QByteArray。 QByteArray 被视为标准的随机访问文件。 例子: QBuffer buffer; char ch; buffer.open(QBuffer::ReadWrite); buffer.write("Qt rocks!"); buffer.seek(0); buffer.原创 2021-10-18 23:15:00 · 1586 阅读 · 0 评论 -
Qt中的水平|垂直布局管理器(QBoxLayout、QHboxLayout和QVBoxLayout)
QHBoxLayout 类水平排列小部件。下面介绍水平布局管理器的使用方法:效果源码: QHBoxLayout* hLayout = new QHBoxLayout(); QPushButton* pbtn1 = new QPushButton("button 1"); QPushButton* pbtn2 = new QPushButton("button 2"); QPushButton* pbtn3 = new QPushButton("but.原创 2021-10-14 11:58:10 · 633 阅读 · 0 评论 -
Qt中QToolButton分析
QToolButton 类为命令或选项提供了一个快速访问按钮,通常在 QToolBar 中使用。工具按钮是一种特殊按钮,可提供对特定命令或选项的快速访问。 与普通命令按钮相反,工具按钮通常不显示文本标签,而是显示图标。按钮的外观和尺寸可通过 setToolButtonStyle() 和 setIconSize() 进行调整。工具按钮可以在弹出菜单中提供其他选项。 可以使用 setMenu() 设置弹出菜单。 使用 setPopupMode() 配置可用于带有菜单集的工具按钮的不同模式。 默认模式是 D原创 2021-10-15 00:05:56 · 3212 阅读 · 0 评论 -
Qt中QGroupBox和QButtonGroup的常用用法
QGroupBox使用方法:QGroupBox *Widget::CreateGroupBox1(){ QGroupBox* Box = new QGroupBox(QString::fromLocal8Bit("QGroupBox用法一")); QRadioButton* radio1 = new QRadioButton("radio1"); QRadioButton* radio2 = new QRadioButton("radio2"); QRadioButt原创 2021-10-13 21:29:45 · 8178 阅读 · 0 评论 -
Qt中的系统托盘QSystemTrayIcon分析
QSystemTrayIcon 类为系统托盘中的应用程序提供了一个图标。现代操作系统通常在桌面上提供一个特殊区域,称为系统托盘或通知区域,长时间运行的应用程序可以在其中显示图标和短消息。要检查用户桌面上是否存在系统托盘,请调用 QSystemTrayIcon::isSystemTrayAvailable() 静态函数。要添加系统托盘条目,请创建一个 QSystemTrayIcon 对象,调用 setContextMenu() 为图标提供上下文菜单,并调用 show() 使其在系统托盘中可见。 可以使原创 2021-10-12 21:40:57 · 1142 阅读 · 0 评论 -
Qt中QSetting读写ini配置文件
ini配置文件格式是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成,常用于微软Windows操作系统中。这种配置文件的文件扩展名多为INI,故名。ini配置文件格式:节(section)节用方括号括起来,单独占一行,例如:[section]键值(键=值)name=value注释注释使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。[Section11 Name]KeyName11=value1KeyName21=原创 2021-10-11 20:24:16 · 996 阅读 · 0 评论 -
Qt5 显示中文的方法
在Qt中显示中文的两种方法:一种是QString::fromLocal8Bit,另一种是QTextcodec编码头文件:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QString>#include <QPushButton>class Widget : public QWidget{ Q_OBJECT protected: QPushButton原创 2021-09-15 00:36:47 · 4776 阅读 · 0 评论 -
Qt5日志实验分析
QtMessageHandler qInstallMessageHandler(QtMessageHandler handler)原创 2021-09-08 11:50:07 · 255 阅读 · 0 评论 -
Qt5解决显示中文的时候出现乱码的问题
QTextCodec 类提供文本编码之间的转换。Qt 使用 Unicode 来存储、绘制和操作字符串。在许多情况下,您可能希望处理使用不同编码的数据。例如,大多数日语文档仍然存储在 Shift-JIS 或 ISO 2022-JP 中,而俄罗斯用户的文档通常存储在 KOl8-R 或 Windows-1251 中。Qt 提供了一组 QTextCodec 类来帮助在非 Unicode 格式和 Unicode 之间进行转换。您还可以创建自己的编解码器类。GBK 编解码器提供与中文 GB18030/.原创 2021-09-07 10:42:20 · 364 阅读 · 0 评论