QT(扫盲)
扫盲
sssnial-jz
这个作者很懒,什么都没留下…
展开
-
模型/视图(基础知识)
开篇但不点题MFC中就有文档/视图模式,这种模式好像叫什么观察者模式之类的似乎,就是数据和显示分离,好多个 view 观察着 data 之类的。可以通过 view(可能有多个)来修改 data,当 data 改变了之后要通知所有的 view 修改自己的显示!(好像核心就是这个:))Model View ControllerMVC包含三个组件:Model -> 应用对象,表示数据 View -> 用户界面,显示数据 Controller -> 定义了界面与用户的交互方原创 2021-04-04 10:19:02 · 1579 阅读 · 2 评论 -
QSS(语法基础)
选择符选择符 示例 说明 通用选择符 * 匹配所有部件 类型选择符 QPushButton 匹配所有QPushButton实例和它的所有子类 属性选择符 QPushButton[flat = "false"] 匹配QPushButton的属性flat为false实例 类选择符 .QPushButton 匹配所有QPushButton实例但不包含它的子类 ID选择符 QPushButton#okButton 匹配.原创 2021-04-04 10:18:44 · 240 阅读 · 0 评论 -
QStyle & QPalette
QT风格Qt中的各种风格是一组继承自QStyle的类。 QStyle类是一个抽象基类,封装了GUI外观。 Qt的内建(bulit-in)部件使用 QStyle 来执行90%的绘制功能! Qt风格已经内置在了Qt当中了,例如,Windows、Motif、Mac OS X风格等,部件特效只有在相应的平台上才会显示继承自 QStyle 的一些类:类名 简介 QCDEStyle CDE风格 QCleanlooksStyle 类似于GNOME中的Clearlook风格 Q原创 2021-04-04 10:18:28 · 412 阅读 · 0 评论 -
拖放(二)
当鼠标拖拽一个数据进入主窗口时,就会触发dragEnterEvent()事件处理函数 获取其中MIME数据 查看他是否包含URL路径(拖入文本文件实际就是拖入他的路径) 即,event -> mimeData() -> hasUrls()实现 有数据接收,否则忽略该事件 当松开鼠标左键,将数据放入主窗口时就会触发dropEvent()事件来处理函数 获取MIME数据中的URL列表,因为拖入的只有一个文件,所以获取列表中的第一个条目 调用toLocakFile()函数将他转换为本地文原创 2021-04-04 10:18:05 · 309 阅读 · 0 评论 -
拖放(一)
数据拖动会被存储为MIME(Multipurpose Internet Mail Extensions)类型。 Qt使用QMimeData类来表示MIME类型的数据,并使用QDrag类来完成数据的传输。 而整个拖放操作都是在几个鼠标事件和拖长事件中完成的。几个常用的MIME类型数据处理函数测试函数 获取函数 设置函数 MIME类型 hasText() text() setText() text\plain hasHtml() html() s原创 2021-04-04 10:17:42 · 67 阅读 · 0 评论 -
文件(QDataStream序列化)
一个数据流就是一个二进制编码信息流,完全独立于主机的操作系统、CPU、字节顺序。 QDataStream类可以实现C++基本数据类型的串行化,如:char、char*、short、int。 而串行化更复杂的数据,就是通过将数据分解为基本的数据类型来完成的~如图所示:serilize序列化机制非常常见,很多语言或者平台都有支持!参考:不二如是:https://fishc.com.cn/forum.php?mod=viewthread&tid=78351&ctid=4.原创 2021-04-03 07:42:13 · 176 阅读 · 0 评论 -
文件(QTextStream基础知识)
QTextStream类提供了一个方便的接口来读/写文本,可以在QIODevice、QByteArray、QStrirng上进行操作。 使用QTextStream的流操作符(<<),可以方便的读/写单词、行、数字。 对于生成文本,QTextStream对字段填充、对齐、数字格式提供了选项支持~QFile data("output.txt");if (data.open(QFile::WriteOnly | QFile::Truncate)) { QTextStream out(原创 2021-04-03 07:41:58 · 1047 阅读 · 0 评论 -
文件( QDir + QFileSystemWatcher操作)
#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); // 进行文件系统监视器的信号和槽的关联 connect(&m_fileSysWatcher, SIGNAL(directoryChanged(QString)),this,SLOT(s.原创 2021-04-03 07:41:46 · 202 阅读 · 0 评论 -
文件(目录基础知识)
QDirQDir类用来访问目录结构及其内容,可以操作很多事情:路径名、访问路径、文件相关信息、底层文件系统、Qt资源系统。QDir常用函数:isRelative()、isAbsolute() 判断一个QDir是否使用了相对或者绝对路径 makeAbsolute() 将一个相对路径转换为绝对路径 path() 获取目录路径 setPath() 设置新的路径 AbsolutePath() 获取绝对路径 dirName() 获取目录名 cd(原创 2021-04-03 07:41:33 · 184 阅读 · 0 评论 -
文件(文件操作)
#include <QCoreApplication>#include <QFile>#include <QFileInfo>#include <QByteArray>#include <QDebug>#include <QDateTime>#include <QObject>int main(int argc, char *argv[]){ QCoreApplication a(argc, arg.原创 2021-04-03 07:41:05 · 209 阅读 · 0 评论 -
文件(文件基础知识)
输入/输出设备QIODevice类是Qt中所有I\O设备的基础接口类! 为QFile、QBuffer、QTcpSocket等支持读\写数据块的设备提供了一个抽象接口。 所以QIODevice类是抽象类,无法被实例化,只是提供I\O功能打开模式:常量 描述 QIODevice::NotOpen 设备没有打开 QIODevice::ReadOnly 设备以只读方式打开,此时无法写入 QIODevice::WriteOnly 设备以只写方式打开,此时原创 2021-04-03 07:41:21 · 263 阅读 · 0 评论 -
容器(二)
QStringQString 使用 16 位的 Unicode 字符 QString 应用了隐式共享,就是在内部用指针+引用计数结构而不给你实际开辟数据空间的机制! Qt主要的隐式共享有QByteArray、QCursor、QFont、QPixmap、QString、QUrl、QVariant和所有的容器!https://fishc.com.cn/forum.php?mod=viewthread&tid=77879&ctid=447QByteArray(好消息)QBy.原创 2021-04-02 07:14:32 · 81 阅读 · 0 评论 -
容器(一)
概览Class Introduction QList<T> 这是目前最常用的类,他存储了给定类型值的一个列表,这些值都可以通过索引访问。 在内部,QList使用数组来实现,以确保进行快速的基于索引的访问。 可以使用QList::append()和QList::prepend()在列表的两端添加项目。 也可以使用QList::insert()在列表的中间插入项目(如果数组实现的话,那岂不是效率低下)。 相对于其他容器类,为了拓展到尽可能少原创 2021-04-02 07:14:15 · 72 阅读 · 0 评论 -
事件处理(定时器事件)
定时器1,Qt的定时器有两种,一种是继承于 QObject 的类内部自带的定时器,启动的时候用 startTimer 成员函数,返回一个定时器的编号,当定时器溢出的时候在 timerEvent 事件处理函数中处理 Timer 溢出的事件!2,另外一种定时器是 Qt 提供的类, QTimer,这个定时器更强大,比如可以使用信号和槽,还可以设置只运行一次的定时器。简单的 QObject 自带的 Timer 代码:#ifndef MAINWINDOW_H#define MAINWINDOW.原创 2021-04-02 07:13:56 · 435 阅读 · 0 评论 -
事件处理(键盘事件)
键盘事件简单的键盘处理~ALT + Q就会切入全屏(试了 M、A,都被占用了...)参考:不二如是:https://fishc.com.cn/forum.php?mod=viewthread&tid=77478&ctid=447原创 2021-04-02 07:13:45 · 211 阅读 · 0 评论 -
事件处理(事件过滤器 & event)
基础原创 2021-04-02 07:13:33 · 171 阅读 · 0 评论 -
事件处理(事件处理顺序)
基础在每个程序的main()函数的最后都会调用QApplication类的exec()函数,他会使Qt应用程序进入事件循环。 一旦有事件发生,Qt便会构建一个相应的QEvent子类的对象来表示,然后将他传递给相应的QObject对象或子对象。测试 KeyPressEvent#ifndef MYLINEEDIT_H#define MYLINEEDIT_H#include <QWidget>#include <QLineEdit>#include <QKey原创 2021-04-02 07:13:21 · 252 阅读 · 0 评论 -
事件处理(事件基础知识)
Event基础1,Qt中,事件作为一个对象,继承自QEvent类。常见的事件有:键盘事件QKeyEvent、鼠标事件QMouseEvent、定时器事件QTimerEvent、关闭事件QCloseEvent、输入事件QInputEvent等2,一个事件由一个特定的QEvent子类来表示,但是有时一个特定QEvent子类来表示,但是有时一个事件又包含多个事件类型,比如鼠标事件又可以分为鼠标按下、单击、双击、移动等操作,这些事件类型都由QEvent类的枚举型QEvent::Type来表示,其中包含了一原创 2021-04-02 07:13:08 · 303 阅读 · 0 评论 -
事件处理(发送事件)
发送一个事件Qt提供了发送一个事件的功能,由QCoreApplication类的sendEvent()函数或者postEvent()函数来实现。 sendEvent()会立即处理给定的事件 postEvent()则会将事件放到等待调度对列中,当下一次Qt的主要事件循环运行时才会处理他。 sendEvent()中的QEvent对象参数在事件发送完成后无法自动删除,需要在栈上创建QEvent对象。 postevent()中的QEvent对象参数必须在堆上创建,当事件被发送后事件队列会自动删除!简单原创 2021-04-02 07:12:54 · 385 阅读 · 0 评论 -
事件处理(事件过滤器)
事件过滤器(eventFliter)Qt提供了事件过滤器来在一个部件中监控其他多个部件的事件。 事件过滤器与其他部件不同,他不是一个类。 只是由两个函数组成的一种操作,用来完成一个部件对其他部件的事件的监视! 这两个函数分别是installEventFilter()和eventFilter() 他们都是QObject类中的函数。 使用事件过滤器可以很容易的处理多个部件的事件来点实战:#include "mainwindow.h"#include "ui_mainwindow.原创 2021-04-02 07:12:34 · 538 阅读 · 0 评论 -
富文本(HTML)
一句话:QLabel或QTextEdit添加文本时可以使用HTML标签或者CSS属性 // HTML ui->textEdit->append("<h1><font color = blue>China</font></h1>");参考:不二如是:https://fishc.com.cn/forum.php?mod=viewthread&tid=77158&extra=page%3D4%26f.原创 2021-04-01 06:53:36 · 1023 阅读 · 0 评论 -
富文本(关键字高亮)
Qt的富文本处理中提供了QSyntaxHighlighter类实现语法高亮 重新实现highlightBlock()函数,直接将QTextDocument类对象指针作为其父部件指针,就可自动调用highlightBlock()函数。???代码:#ifndef MYSYNTAXHIGHLIGHTER_H#define MYSYNTAXHIGHLIGHTER_H#include <QObject>#include <QSyntaxHighlighter>#incl原创 2021-04-01 06:53:49 · 940 阅读 · 0 评论 -
富文本(查找)
QTextEdit有find()函数,QTextDocument也有find()函数,前者功能比较简单,后者功能丰富,以下介绍前者的find()!QTextDocument::FindBackward 向后查找 QTextDocument::FindCaseSensitively 不区分大小写 QTextDocument::FindWholeWords 匹配整个单词 代码:void MainWindow::findNext(){ // 为了简单,直接指定.原创 2021-04-01 06:54:04 · 480 阅读 · 0 评论 -
富文本(List、Tab、Image的几点补充)
QTextTablecellAt() 获取指定单元格 insertColumns() 插入列 insertRows() 插入行 mergeCells() 合并单元格 splitCell() 拆分单元格 对于一个单元格,其对应类是QTextTableCell,其对应格式是QTextTableCellFormat类QTextListcount() 获取列表中项目个数 item() 获取指定的项目的文本块 removeItem()原创 2021-04-01 06:54:17 · 192 阅读 · 0 评论 -
富文本(Insert Image)
代码:void MainWindow::insertImage(){ QTextImageFormat imageFormat; imageFormat.setName(":/new/Img/go.jpg"); ui->textEdit->textCursor().insertImage(imageFormat);}QTextImageFormat参考:不二如是:https://fishc.com.cn/forum.php?mod=vie.原创 2021-04-01 06:54:29 · 876 阅读 · 0 评论 -
富文本(insert table)
代码:void MainWindow::insertTable(){ QTextCursor cursor = ui->textEdit->textCursor(); QTextTableFormat tableFormat; tableFormat.setCellSpacing(3); tableFormat.setCellPadding(11); cursor.insertTable(3,3,tableFormat);}QTextTa原创 2021-04-01 06:54:51 · 355 阅读 · 0 评论 -
富文本(insert List)
代码:void MainWindow::insertList(){ QTextListFormat listFormat; listFormat.setStyle(QTextListFormat::ListDecimal); ui->textEdit->textCursor().insertList(listFormat);}QTextListFormat参考:不二如是:https://fishc.com.cn/forum.php?mod=.原创 2021-04-01 06:55:03 · 240 阅读 · 0 评论 -
富文本(文本块)
感谢如是不二文本块QTextBlock类为文本文档QTextDocument提供了一个文本片段QTextFragment的容器。 一个文本块可以理解为一个段落。 但是,不要用回车换行!!! 因为回车换行,表示再新建一个文本块。 QTextBlock提供了只读接口,是文档层次接口的一部分???QTextBlock格式设置由QTextBlockFormat类来负责,可以进行对齐方式、四周缩进等。 QTextBlock的文本内容格式由QTextCharFormat类来负责,比如字体大小、加粗、原创 2021-04-01 06:55:16 · 470 阅读 · 0 评论 -
富文本(文档结构)
啊啊·原创 2021-04-01 06:52:51 · 624 阅读 · 0 评论 -
Buddy
设置伙伴的方式:先写上 &,之后进入伙伴编辑模式,没有伙伴关系建立之前,&是显示的,建立了伙伴关系之后,&就不显示了!参考:不二如是:https://fishc.com.cn/forum.php?mod=viewthread&tid=76707&extra=page%3D5%26filter%3Dauthor%26orderby%3Ddateline%26typeid%3D449...原创 2021-04-03 07:43:14 · 82 阅读 · 0 评论 -
状态栏(QStatusBar)
状态栏信息分为三类:QT designer竟然不支持直接向 StatusBar 拖放部件!代码~ // ---- statusBar // temporary show ui->statusBar->showMessage("showMessage show temp message!",5000/*5s*/); // permenent show QLabel *label = new QLabel(this); label-&g原创 2021-04-03 07:42:45 · 353 阅读 · 0 评论 -
自定义菜单(QWidgetAction)
用一个 Widget 作为一个 Action,很酷!贴代码:#ifndef MYMENUWIDGET_H#define MYMENUWIDGET_H#include <QObject>#include <QWidgetAction>#include <QLineEdit>#include <QSplitter>class QLineWdit;class MyMenuWidget : public QWidgetAction{原创 2021-04-01 06:55:34 · 1927 阅读 · 0 评论 -
MainWindow漫谈
漫谈.1加速键和快捷键不一样加速键:alt + ...快捷键:ctrl + ...加速键用来启用文件菜单,快捷键用来启用菜单里面的动作!漫谈.2toolButtonStyle 设置图标和应用文本的显示及其相对位置 movabel 设置状态栏是否可以移动 allowedArea 设置允许停靠的位置 iconsize 设置图标的大小 floatable 设置是否可以悬浮 两点说明:往工具栏添加部件可以使用addWidge.原创 2021-04-03 07:42:58 · 240 阅读 · 0 评论 -
MDI(Multiple Document Interface)
先上个图吧?void MainWindow::on_actionnew_N_triggered(){ QLineEdit *lineEdit = new QLineEdit(this); QMdiSubWindow *mdiSubWindow = ui->mdiArea->addSubWindow(lineEdit); mdiSubWindow->setWindowTitle("MdiSubWindow"); mdiSubWindow-&g原创 2021-04-03 07:42:33 · 199 阅读 · 0 评论 -
停靠部件(QDockWidget)
题外话:QT使用起来真是很方便,这是相对于 MFC 而言的,很多接口都封装得很清晰,当初写MFC的时候感觉有点散的感觉,而QT就比较完整和规整和更优雅,还有当初用 VC6 编写 MFC 时候的辛酸!拖入一个 QDockWidget 并放入几个 Widget,随便布局一下!对 QDockWidget 属性的说明:floating:是否初始化显示在最顶层 features:允许停靠的动作 allowedAreas:允许停靠的区域 dockWidgetArea:初始化显示区域OK(原创 2021-04-02 07:14:57 · 143 阅读 · 0 评论 -
QTSize
sizePolicy大小提示(sizeHint)、最小大小提示(minimumSizeHint) sizeHint:属性保存了部件的建议大小,对于不同的部件,默认了不同的大小提示。可用sizeHint()函数获取其值 minimumSizeHint:保存了一个建议的最小大小。可用minnimunSizeHint()函数来获取其值 如果使用了minimumSizeHint设置部件大小,则sizeHint将会被会被忽略好像就使用过 Fixed...FormLayout属性..原创 2021-03-31 12:45:00 · 586 阅读 · 1 评论 -
分裂期(QSplitter)
QSplitter继承自QFrame类,QFrame类继承自QWidget,QWidget继承自QObjectQFrame属性 frameShape Noframe 无框架 Box 盒子架 Panel 镶板架 Winpanel Winpanel ...原创 2021-03-31 13:35:48 · 117 阅读 · 0 评论 -
栈部件(StackedWidget)
上图~一个ListWidget,一个StackedWidget,右下角是QFrame 的四个属性,为了突出显示所以才这样设置!之后是重点~选中signal/slot编辑状态!进行这样的List信号和StackWidget槽的连接!效果>>(忽视to third Page)...原创 2021-03-30 16:54:02 · 1563 阅读 · 0 评论 -
表单布局管理器(QFormLayout)
按照上图步骤添加下图的三对!别说还挺好用!QFormLayout好像就是自动管理“标签/输入”布局的控件,其余的更多用法目前还不知道(怎么打囧的表情~)参考:不二如是:https://fishc.com.cn/forum.php?mod=viewthread&tid=76643&extra=page%3D6%26filter%3Dauthor%26orderby%3Ddateline%26typeid%3D449...原创 2021-03-31 11:15:22 · 143 阅读 · 0 评论 -
布局管理
QWidget有个方法交 setLayout~UI界面上Layout的一些属性:直接来看 GridLayout:首先随便拖放一些乱七八糟的控件!然后在代码里面重新排列他们的位置:Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); QGridLayout *gridlayout = new QGridLayou..原创 2021-03-31 11:05:20 · 224 阅读 · 0 评论