QT
文章平均质量分 86
xingzaicpp
80后码农,热爱码代码,哈哈哈
展开
-
QT之QCompleter的用法[一] --- 最简单的使用方法
本系列包含3篇文章QT之QCompleter的用法[一] --- 最简单的使用方法(采用QStringListModel)QT之QCompleter的用法[二] --- 采用除了QStringListModel之外的其他Model(比如根据拼音查找汉字列表)QT之QCompleter的用法[三] --- 优化UI的显示本文讲解最简单的使用方法:QCompleter能实现自动填充功能,方便用户输入,提升用户的体验,一般和QLineEdit与QComboBox搭配起来使用.先来个最简单的示例:原创 2021-01-06 09:11:13 · 11163 阅读 · 3 评论 -
QT键盘消息
相对鼠标消息, 键盘消息显得要容易些.主要是继承并实现这两个函数virtual void keyReleaseEvent(QKeyEvent * event);virtual void keyPressEvent(QKeyEvent * event); 我在这两个函数里加了些代码,让用户的按键状态在状态栏中显示出来void MainWindow::keyPressEvent(QKeyEvent * event){ QString strMessage = QDateTime原创 2020-12-23 08:33:52 · 376 阅读 · 0 评论 -
QT鼠标消息分析
本文主要探索以下几个知识点:1.setMouseTracking的使用2.widget的鼠标消息会上发给父窗口,其机制是怎样的,怎么阻止这种行为(WA_NoMousePropagation的使用)3.WA_Hover有什么用,为什么有时需要这个.4.和Win32窗口编程的一些区别(不熟悉Win32编程的自动略过)先看看我们要测试的程序的样子:如上图所示,控件的父子关系为:青色对应的类为MyChildWidget紫色对应的类为MoveableWidget灰色对应的类为Mai原创 2020-12-23 06:46:46 · 831 阅读 · 0 评论 -
QT setMouseTracking没反应
今天用Qt Creator自动生成了一个窗口程序,想试试setMouseTracking,兴冲冲地写下了如下代码:MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); setMouseTracking(true);}然后,继承了mouseMoveEvent,打印一行日志void MainWind原创 2020-12-22 17:31:42 · 1527 阅读 · 3 评论 -
QT designer(设计器)快速编辑信号与槽(快捷键F3/F4)
本文抛砖引玉,介绍编辑方法,请各位看官举一反三,灵活运用.QT设计器可以让一个UI控件发出的信号与另一个UI控件的槽连接起来.举例来说,假设有两个控件,一个是SpinBox另一个是Horizontal Slider:a).当用户改变SpinBox的值时Horizontal Slider跟着动b).当用户拖动Horizontal Slider时SpinBox的值跟着改变.来张图你就明白了:怎么操作的呢? 不用写代码,直接在设计器界面里操作,如下:1.进入设计器2.按F4进入信号与槽编.原创 2020-12-20 22:33:33 · 3325 阅读 · 0 评论 -
QT实现托盘图标,弹出气泡消息(类似微信托盘)
本文介绍QT托盘图标和气泡消息的实现.效果图如下:本文参考的例子是SystemTray.7z,已经上传gitee,从版权申请来看,这个例子是QT官方的例子,我觉得写得特别好.原例子的所有UI都是动态创建的, 我修改成用QT设计器生成UI,这样做的好处是能够减少代码量,让初学者更容易看懂.////1.QT托盘图标//a)创建托盘QT托盘图标的主要的类是QSystemTrayIcon,创建的代码如下:void MainWindow::createTrayIcon(){ //菜单项..原创 2020-12-18 11:15:15 · 2389 阅读 · 0 评论 -
简要源码分析Q_PROPERTY
本文不打算像文档一样翻译Q_PROPERTY,而是从源码的角度来看看怎么使用Q_PROPERTYQT的PROPERTY官方的定义,为了保持格式,我特地截屏,如下毫无疑问, QT的moc系统对Q_PROPERTY有特别的处理,我们现在看看他处理了什么.首先,定义一个类Test,代码如下:class Test : public QObject{ Q_OBJECTpublic: explicit Test(QObject *parent = 0); ~Test();原创 2020-12-15 22:21:01 · 278 阅读 · 0 评论 -
QT实现多语言并动态切换
本文讲述在QT中动态切换多语言.我会动态生成一个菜单,这个菜单会列出所有的语言,用户可以单选一种语言,选择语言后,界面就会切换到指定的语言1.兜底的语言当一个语言(字符串)没有被翻译时,他会用你代码中的语言(字符串)来显示, 这个语言(字符串)就是兜底的语言.也就是说,如果你编码的菜单,字符串等用的是中文,我们就认为兜底的语言是中文如果你编码的菜单,字符串用的是英文,那我们就认为兜底的是英文.强烈建议,您用英文进行编码(兜底的语言是英文),我测试的情况是,如果用中文,生成的ts文件乱码!没测试Q.原创 2020-12-15 15:50:08 · 1528 阅读 · 0 评论 -
用qt designer“设计“出带圆点的单选菜单项
先放张图,也许我们要的是右边的样子,而QT设计器设计出来是左边的样子,那怎么样稍做修改一下,实现右边的效果呢?另外,据说,在很久以前,QT实际上是可以设计出右边的样子的,但后来QT设计器取消了这个功能.基础知识QAction一个action就是一个菜单项,或者是工具栏中的一个按钮,一个action里面可以保存文本,图标,快捷键,tooltips等等信息.action根据他所在的位置(菜单或者工具栏),会随遇而安,显示出菜单的样子,或者工具栏中的按钮的样子.用Designer设计出如下样子的菜单原创 2020-12-14 09:25:40 · 1042 阅读 · 1 评论 -
QT解决addToolBar后多出一个空白工具条的BUG
今天测试一个Toolbar的东西,写了如下代码:MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); QAction* openAction = new QAction(tr("&Open"), this); QToolBar* helloToolbar = addToolBa原创 2020-12-13 11:39:52 · 623 阅读 · 0 评论 -
QT信号与槽的源码简要分析
信号到槽是QT的标识性特征之一.本文打算用简明扼要的源码分析,来告诉读者信号与槽是怎么实现的.不然要分析的太多,又复杂,会让人蒙掉----他说的到底是啥?本文讲述的是一个类MySender向另一个MyReceiver发信号,并响应的故事.先来熟悉一下宏吧,混个脸熟:# define slots# define signals protected# define emit //可忽略# define SLOT(a) qFlagLocation("1"#a QLOCATION)原创 2020-12-11 17:46:31 · 548 阅读 · 1 评论 -
QT使用菜单并加上图标和快捷键
仿照windows的记事本,做出来大概是这个样子实现的功能有:1. 用鼠标点击或者按ALT + F 可以弹出菜单2.弹出菜单后,按键盘N或者点击菜单可以执行对应的动作3.直接按CTRL + N快捷键也可以执行对应的动作.现在就一步一步开始吧:A)进入设计界面,输入文件(&F)并按回车键此处的&F表示,用ALT + F可以弹出菜单来,这和mfc是一样的.B)进入子菜单设置,输入新建(&N)并按回车键注意,这里有一个插曲,我是输入不了的,只好在记事本里...原创 2020-12-09 15:39:32 · 520 阅读 · 0 评论 -
QT中修改窗口的标题和图标
修改窗口标题QT的窗口默认名字是MainWindow,在这里介绍两种方法修改窗口的Title1.直接通过UI设计器修改:我修改成了"我的窗口"运行后,显示如下:好了,我们需要去找下,"我的窗口"这个字符串被QT放在哪里的?用文本编辑器打开mainwindow.ui,可以看出,实际上是放在这个XML里面了这个XML文件会被编译成代码(C#也是如此,不知道他们谁COPY谁)找到build-ModifyTitleAndLogo-unknown-Debug\ui_mainwind原创 2020-12-06 12:44:54 · 29968 阅读 · 2 评论 -
qt creator 编辑 左侧项目管理栏关掉了,在哪里可以让其显示
不小心把qt creator搞成这样子了:这下好了,我都不知道咋编辑文件了,网上查了资料,找到方法,记录下:原创 2020-06-14 17:25:46 · 6473 阅读 · 5 评论 -
QT布局QGridLayout QHBoxLayout QVBoxLayout简要分析
在分析之前,先吐槽下M$的MFC,竟然没有相对布局!(至少我不知道,每次都是代码中控制布局),M$这么多年,也不发展一下,你看C#都有相对布局...参考精通Qt4编程(第2版),先看看总体的布局图然后看看代码CLoginDlg::CLoginDlg(QWidget* parent/* = NULL */) : QDialog(parent){ //QGridLayout usrLabel = new QLabel(tr("用户名:")); pwdLabel = new QLabel(tr原创 2020-06-11 17:33:56 · 1259 阅读 · 0 评论