QT-UI
文章平均质量分 68
qt布局
luckyone906
这个作者很懒,什么都没留下…
展开
-
qt中在代码中删除界面的槽方法后一定要把定义和声明都删掉否则代码生成器中一直报错
c++原创 2022-11-07 18:41:07 · 1084 阅读 · 0 评论 -
QT中拷贝一个项目的ui界面到另一个项目时Ui.h文件时Ui.h文件控件变量错乱问题解决
C++原创 2022-11-06 19:58:56 · 1250 阅读 · 0 评论 -
QT-子窗口关闭时,为什么不执行析构函数问题
C++原创 2022-10-04 19:52:39 · 2852 阅读 · 1 评论 -
QT::::点击退出按钮,退出当前窗口(lamda表达式写法),实现点击按钮打开和关闭窗口
/*************************点击退出按钮,退出当前窗口*********************************/ QObject::connect(ui.pushButton_5, &QPushButton::pressed, [this]() { QApplication *app; //app->exit(); //在这里两个函数一样的功能 app->quit(); });QT实现点击按钮打开和关闭窗口//主要代码,.原创 2022-05-27 22:03:59 · 4395 阅读 · 0 评论 -
QT中QWIDGET动态增加控件
QPushButton *btn = new QPushButton(this);btn->show();QPushButton* buttonTest=new QPushButton();//动态创建按钮 buttonTest->setText("手动添加1111111"); buttonTest->setParent(this);//设置父控件,有此步骤不需show也可显示 buttonTest->setGeometry(100,100,100,20); .原创 2022-05-27 22:00:19 · 8330 阅读 · 1 评论 -
Qt QList清空问题
1.代码分析//向QList中添加4个项QList<QWidget*> lstWidget;lstWidget.append(new QWidget);lstWidget.append(new QWidget);lstWidget.append(new QWidget);lstWidget.append(new QWidget);情况1: 采用foreach遍历清空,removeOne元素foreach(QWidget *widget,lstWidget){ if(..转载 2022-05-27 21:51:27 · 1811 阅读 · 0 评论 -
QT中窗口关闭自动销毁
我们知道c++内存管理的一个规则:new出来的对象,一定要delete。我们实现一个弹窗的时候,有时候继承widget,有时候继承dialog。不管哪种,窗体调用show方法后,不可能直接delete。当然,new该窗体的时候,指定了父对象,就可以不用显示调用delete,它会随着父对象的销毁而销毁。那这时候,关闭弹窗的操作,就仅仅是隐藏了。为了实现真正的delete。我们需要设施窗口的一个属性 DeleteOnClose,具体方法如下:setAttribute(Qt::WA_DeleteO原创 2022-05-15 19:54:48 · 6495 阅读 · 2 评论 -
Qt创建停靠悬浮窗口实例
Qt 创建停靠悬浮窗口 QDockWidget1.Qt实现窗口停靠和悬浮使用类QDockWidget,它有两个重要方法用来设置停靠特性以及停靠区域,1 dw1->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable);//设置停靠窗口特性,可移动,可关闭2 dw1->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidget原创 2022-04-28 22:18:04 · 2586 阅读 · 0 评论 -
QT-多线程重要概念及与界面之间交互总结(混淆点分析:c#中可以在子线程中创建ui控件,qt中不能在子线程中创建ui控件)
1. 线程与界面组件需要注意的地方在QThread线程中不能直接创建QWidget之类的界面组件.(c#中可以在子线程中创建ui控件) 因为在QT中,所有界面组件相关的操作都必须在主线程中(也就是GUI thread) 所以, QThread线程不能直接操作界面组件.2.QThread线程如何操作界面组件-方法1将多线程类对象封装为GUI界面类的类成员 然后在子线程定义信号函数,通过信号槽机制,向界面组件emit发射信号,从而实现间接操作.3.QThread线程如何操作界面组件-方法2原创 2022-04-27 22:18:31 · 1851 阅读 · 0 评论 -
Qt对话框的事件循环分析(子线程中不能创建UI窗体分析)
重要:GUI线程和辅助线程如前所述,每个程序在启动时都有一个线程。这个线程被称为“主线程”(在Qt应用程序中也称为“GUI线程”)。Qt GUI必须在这个线程中运行。所有小部件和几个相关类(例如QPixmap)都不能在辅助线程中工作。辅助线程通常称为“工作线程”,因为它用于从主线程卸载处理工作。首先,子线程不能创建与UI有关的对象,但是可以这样子做.只能在子线程中发一个信号到主线程中,由主线程创建对话窗口.子线程发完信号后,在子线程中while循环调用事件循环,.对话窗口退出之后,主线程调用接口,结原创 2022-04-27 22:14:36 · 2385 阅读 · 1 评论 -
qt 子线程(多线程)更新gui的几种方法
直接进入主题,据我所知,方法有3种:1、自定义signal、slot,这个就不多说了,标准方法2、使用QmetaMethod::invoke,这是可以直接在子线程调用的,看起来比较另类3、从5.4开始,有了另一种新方法:Qtimer::singleShot(0),这玩意儿可不是定时启动那么简单,你给他0的时间他就是GUI线程安全的,完整例子可以测试: 1 2 3 4 5 6 7 8 9 10 11原创 2022-04-27 22:14:22 · 3377 阅读 · 0 评论 -
qt中使用重写控件的方法
在.cpp文件里的构造函数里F2类名进入到ui.h文件手动改自定义控件指针及实例,切记如果重新生成项目方案提示更新ui.h文件时选择不更新此文件否则手动改完的会自动变回去原创 2022-04-27 21:16:02 · 1204 阅读 · 0 评论 -
Qt 模态窗口和非模态窗口
项目中要用到非模态窗口,程序一开始弹出一个主窗口来,点击一个按钮的时候弹出一个非模态窗口,虽然是一个比较简单的需求,但是在实现的过程中有各种问题。列一下自己遇到的问题并且说一下自己的解决方法。1) 弹出的非模态窗口始终躲在最后面,并且非模态窗口上的控件不能操作。 主窗口是一个模态的窗口,非模态窗口在初始化的时候没有把主窗口作为他的父窗口。所以弹出来的非模态窗口就始终躲在最后面。 CModealDlg*dlg = new CModealDlg(this); //this 指针是主窗口的指...原创 2022-04-27 20:45:19 · 3564 阅读 · 0 评论 -
QT 中实现QLabel的点击事件(重写QLabel)
默认情况下,QLabel是不支持点击事件的,要实现QLabel的点击事件,一般有两种方式:1、继承QLabel,重写鼠标点击事件,通过发送信号与父窗体实现通讯ClickableLabel.hpp/*!* \file ClickableLabel.hpp** \brief Clickable Label** \author Kandy* \date 2021/11/19 16:49:40*/#pragma once#include <QLabel>#in...原创 2022-04-27 20:35:54 · 6644 阅读 · 0 评论 -
Qt创建右键菜单的方法
函数所有派生自QWidget的控件,若实现在其上右键单击弹出菜单,需要设置该控件的上下文菜单策略函数为setContextMenuPolicy(Qt::CustomContextMenu),设置该策略后当用户右键点击控件时qt会发送一个信号customContextMenuRequested() ,给这个信号设置相应的槽函数,在槽函数中将菜单展示出来就行了。涉及相关函数其原型如下:void QWidget::setContextMenuPolicy(Qt::ContextMenuPolicy po原创 2022-04-27 20:31:51 · 6630 阅读 · 0 评论 -
QT中窗口去掉最大化最小化关闭按钮及菜单的方法
在QT界面开发过程中,有的时候需要隐藏最大化最小化甚至是关闭按钮,以排除用户的操作系统无定义,让程序流向混乱现总结如下:1、Qt的QDialog去掉最大化和最小化以及关闭按钮 :在构造函数中输入this->setWindowFlags(Qt::Dialog|Qt::FramelessWindowHint);这样会把标题栏都去掉。2、让最大化和最小化按钮失去效用(加上下面这两句画,但是按钮不会消失,最大化按钮无效用,但是最小化按钮还是可以用的):setWindowFlags(Qt::Dial原创 2022-04-27 20:36:07 · 9358 阅读 · 0 评论 -
Qt编写自定义控件及插件的使用
在使用Qt Designer设计窗体界面时,我们可以使用Widget Box里的窗体控件非常方便的绘制界面,比如拖进去一个按钮,一个文本编辑器等。虽然Qt Designer里的控件可以满足我们大部分的需求,但是有时候,也会产生一些特殊的需要,比如一个输入框,我们要输入的是经纬度,此时就会有两种输入方式,一种是小数形式,一种是度分秒的形式,此时只使用一个简单的LineEdit是无法满足需求的。我们设想构造这样一个输入控件,它可以支持浮点数输入,同时它还具有一个属性,更改这个属性可以使其切换为经纬度输入形式。如原创 2022-04-27 20:23:31 · 9176 阅读 · 4 评论 -
QT中添加图片资源的方法
1、在ui设计界面中添加label,用于显示图片2、添加QT资源文件 往项目中添加新文件,选择QT分类中的资源文件,名称为"myImage",其他选项默认。3、添加资源 在项目目录下新建文件夹"image",用于存放将要使用的图片文件。 在Qt Creator中,在资源管理器界面单击"添加"按钮,选择"添加前缀",然后将属性栏中的前缀改为"/myImage",再单击"添加"按钮,"添加文件",在弹出的对话框中选择image中的图片文件。 添加完成后myImag...原创 2022-04-26 22:10:12 · 19109 阅读 · 0 评论 -
Qt 设置窗口背景图片的几种方法实例
1.在paintEvent事件中绘制图片void Widget::paintEvent(QPaintEvent * ev){ QPainter painter(this); painter.drawPixmap(rect(),QPixmap(":/bg.jpg"),QRect());}drawPixmap在Widget的整个矩形区域绘制背景图片,第三个参数为要绘制的图片区域,传入空的矩形表示整个图片区域。通过这种方式可以将图片平铺到窗口上,缺点就是要使用paintEvent事件需要新建一原创 2022-04-26 22:11:27 · 37138 阅读 · 3 评论 -
QT和MFC中怎么使用继承基类的自定义控件放置在界面上
1.Qt中自定义button继承于QPushButton,f2查看指定控件的声明定义,可以手动改ui.form.h文件里各个类型的控件指针变量,改成自己定义的" (这里ui.form.h在工程文件里不能直接显示,只能通过在代码里f2控件名查看其定义声名才能跳到此文件,此文件里列出了父窗体下各个控件的声名类型和定义等信息,可手动更改)qt中自定义控件继承原生控件基类后,可增该属性事件等,使用时可以在ui.form.h头文件里把原界面的定义声明更改成自定义的。2.mfc中class CMyBu.原创 2022-01-14 22:38:28 · 793 阅读 · 0 评论 -
Qt-5种布局控件详解
实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既费时又费力。作为一款成熟的 GUI 框架,Qt 提供了很多摆放控件的辅助工具(又称布局管理器或者布局控件),它们可以完成两件事:自动调整控件的位置,包括控件之间的间距、对齐等; 当用户调整窗口大小时,位于布局管理器内的控件也会随之调整大小,从而保持整个界面的美观。总之借助布局管理器,我们无需再逐个调整控件的位置和大小,可以将更多的精力放在软件功能的实现上。Qt 共提供了 5 种布局管理器,每种布局管理器对应一个类,分别是 QVBoxL原创 2021-12-27 19:41:57 · 3553 阅读 · 0 评论 -
Qt-手动布局
简述手动布局,可以实现和水平布局、垂直布局、网格布局等相同的效果,也可实现属于自己的自定义布局,当窗体缩放时,控件可以随之变化。其对于坐标系的建立有严格要求,纯代码思维,使用复杂,不易维护,所以一般不建议使用。下面我们以简单的例子来讲解如何使用。简述 事件 垂直布局 简略图 效果 源码 水平布局 效果 源码 总结事件在Qt之布局管理器一节中,我们介绍了对于手动布局的实现思路。通过QWidget::resizeEvent()来计算所需要分配的大小,原创 2021-12-27 19:42:33 · 507 阅读 · 0 评论 -
qt中QListView的用法和QModelIndex的使用
使用QTreeView,对于很多函数中针对item的唯一标识QModelIndex的使用,记录下两种对于QModelIdex的使用1,树形结构的item设置为选中QModelIndex rootIndex;QModelIndex robotsIndex;QModelIndex nonMobileIndex;rootIndex = treeView->model()->index(0, 0);//最顶层item的indexrobotsIndex = treeView->mod原创 2021-12-27 19:43:34 · 8271 阅读 · 0 评论 -
Qt-QMessageBox用法详解
QMessageBox 是 Qt 框架中常用的一个类,可以生成各式各样、各种用途的消息对话框,如图 1 所示。图 1 QMessageBox消息对话框很多 GUI 程序都会用到消息对话框,且很多场景中使用的消息对话框是类似的,唯一的区别只是提示信息不同。为了提高程序员的开发效率,避免重复地“造轮子”,Qt 开发者设计好了几种通用的 QMessageBox 消息对话框,需要时可以直接使用。通用的QMessageBox消息框Qt 提供了 6 种通用的 QMessageBox 消息对话.原创 2021-12-27 19:42:54 · 14198 阅读 · 0 评论 -
QT-子线程或自定义类操作访问主界面UI控件的几种方法
前言QT创建窗体工程,一般在MainWindow或Dialog类里可以直接通过ui指针访问控件,但是添加新的类后又如何访问呢,可以通过以下几种方式:1.将ui指针公开后直接访问(1)例如有个自己定义的类CustomClass,在自定义类里包含主界面指针MainWindow *class MainWindow;class CustomClass{public: CustomClass(MainWindow * parent); MainWindow * mainwidow...原创 2021-12-26 11:42:06 · 8150 阅读 · 2 评论 -
QT c++ 中使用PostMessage/SendMessage实例
PostMessage是Windows API(应用程序接口) 中的一个常用函数,用于将一条消息放入到消息队列中。并且不会等待响应的线程处理消息,而是直接返回。(简单的理解就是异步)。而SendMessage作用一样,但是会等待结果返回(同步)我们先来看PostMessage函数的原型:BOOL WINAPI PostMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两原创 2021-12-26 11:36:52 · 2620 阅读 · 0 评论 -
Qt中标准对话框实例,QObject::tr()的作用
函数tr()全名是QObject::tr(),被它处理的 字符串可以 使用工具提 取出来翻译 成其他语言, 也就是做国际化使用。只要记住,Qt的最佳实践:如果你想让你的程序国际化的话,那么,所有用户可见的字符串都要使用QObject::tr()!但是,为什么我们没有写QObject::tr(),而仅仅是tr()呢?原来,tr()函数是定义在Object里面的,所有使用了Q_OBJECT宏的类都自动具有tr()函数。在书中看到的一句话,如果想要你做的程序国际化,就把所有用户可见的...原创 2021-12-26 11:20:41 · 2961 阅读 · 0 评论