QT-窗口
冷月醉雪
这个作者很懒,什么都没留下…
展开
-
QDialog 添加最大化、最小化按钮和关闭按钮,并且要正常显示
在使用QDialog时,默认情况下只有“这是什么”和“关闭”按钮(不知道为什么QT要这么做),但是我们习惯有最大化和最小化按钮。本文介绍如何在该模式下如何设置。 新建一个QDialog工程,然后打开Dialog.cpp文件,在Dialog的构造函数里写入如下的代码即可: Qt::WindowFlags flags=Qt::Dialog; flags ...原创 2018-08-23 20:57:16 · 4405 阅读 · 4 评论 -
窗口居中显示
在Qt下,程序运行后窗口默认就是在屏幕中央显示的,但是后来发现在XP系统下没有居中显示,需要手动调整了和网上其他方案一样,大多数人会用类似这样的代码move((desktop->width() - this->width())/2, (desktop->height() - this->height())/2); 这段代码有两个问题 ...原创 2018-08-09 08:57:44 · 1401 阅读 · 0 评论 -
isHiden和isVisible的区别(可是有nativeEvent进行设置)
1、isHiden只是返回部件的隐藏属性,并不能表示部件当前的真实状态。比如A部件有个子部件B,而A处于隐藏状态,子部件B必然也不可见,但子部件B本身的isHiden还是为false。 2、判断部件是否可见应该用isVisible属性。 3、对于一个顶层窗口来说,虽然可以不用考虑以上两条,但还是建议使用isVisible来判断可见性。 还有值得注意的一...原创 2018-08-09 08:57:35 · 476 阅读 · 0 评论 -
QWidget 模态
想让一个Widget成为模态,我们只需要对其设置:setAttribute(Qt::WA_ShowModal, true); 注意:这是QWidget的成员函数 ,也就是说,QWidget可以显示为模态或非模态! setWindowModality 除了直接调用setAttribute外,QWidget 提供了一个易用的函数,来设置窗...原创 2018-08-09 08:57:27 · 491 阅读 · 0 评论 -
仿win7窗体自动顶部最大化左侧右侧半屏效果(改写nativeEvent,使用AdjustWindowRectEx)
#include "HMainWindow.h"#include <QApplication>#ifdef Q_OS_WIN#include <qt_windows.h>#include <dwmapi.h>#ifndef GET_X_LPARAM#define GET_X_LPARAM(lParam) ((int)(short)LOWO...原创 2018-08-09 08:57:13 · 857 阅读 · 1 评论 -
QWidget QMainWindow QDialog 之间的区别
QWidget类是所有用户界面对象的基类。 窗口部件是用户界面的一个原子:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。 QMainWindow 类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用...原创 2018-08-14 21:34:29 · 750 阅读 · 0 评论 -
QDialog 添加最大化、最小化按钮和关闭按钮,并且要正常显示
在使用QDialog时,默认情况下只有“这是什么”和“关闭”按钮(不知道为什么QT要这么做),但是我们习惯有最大化和最小化按钮。本文介绍如何在该模式下如何设置。 新建一个QDialog工程,然后打开Dialog.cpp文件,在Dialog的构造函数里写入如下的代码即可:Qt::WindowFlags flags=Qt::Dialog; flags |=Qt::W...原创 2018-08-14 21:28:02 · 1087 阅读 · 0 评论 -
QWidget属性,函数的学习
颜色/渲染方式 QWidget::DrawWindowBackground 背景被渲染到目的窗口(默认开启)QWidget::DrawChildren 子控件被递归渲染到目的窗口QWidget::IgnoreMask 忽略掩模autoFillBackground 自动填充背景色(默认是false)font 字体palette 控件的调色板尺寸与位置baseSize 基本...原创 2018-08-16 20:29:03 · 1764 阅读 · 1 评论 -
QWidget中嵌入win32 window(使用QWindow和QWidget::createWindowContainer)
主要用到QWindow::fromWinId和QWidget::createWindowContainer这两个函数 QWindow::fromWinId用来创建一个win32窗口的代理 QWidget::createWindowContainer用来把窗口封装为一个QWidget控件 示例代码 HWND hwnd = ::FindWindow(L"...原创 2018-08-16 20:28:45 · 11171 阅读 · 0 评论 -
setFocus一定要写在setLayout设置的后面,否则不起作用——使用setFocusPolicy为控件设置不同的焦点策略:Tab焦点,Click焦点,Wheel焦点和没有焦点
QLineEdit* pEditor = new QLineEdit(m_strText); pEditor->resize(.......); pEditor->move(........); scene()->addWidget(pEditor); pEditor->setFocus(); 注意红色字体的俩个语句的顺...原创 2018-08-16 20:26:58 · 1714 阅读 · 0 评论 -
如何使弹出的窗口不出现在任务栏
调用出新的窗口时会出现下方的任务栏中, 我想让它不出现,就像一个工具栏窗口一样,网上搜了一下,使用下面的设置可以实现,不过样式发生了改变,如何让窗口即不出现在任务栏,样式也不发生变化?setWindowFlags(Qt::Tool); 这是设置前的样子 这是设置后...原创 2018-08-14 21:22:19 · 2780 阅读 · 1 评论 -
窗体坐标和区域大小各种位置信息
Qt提供了很多关于获取窗体位置以及显示区域大小的函数,包括窗体的坐在点位置、长、宽、尺寸信息等。 1、创建头文件geometry.h,声明继承于QDialog的类#ifndef GEOMETRY_H#define GEOMETRY_H#include <QtGui>class Geometry : public QDialog{ Q_OBJEC...原创 2018-08-06 12:24:36 · 390 阅读 · 0 评论 -
QPalette实例教程(QWidget自带的颜色设置工具,对Window的各个部分都可设置颜色)
QPalette是一款非常好用的颜色设置工具: 头文件:#include <QPalette> (^-^我没有用这个头文件也可以使用QPalette)常用函数:void setBrush(ColorRole role, const QBrush & brush)void setBrush(ColorGroup...原创 2018-08-06 12:24:48 · 1516 阅读 · 1 评论 -
QDialog 模态对话框与事件循环
QDialog 对话框非模态QDialog * dlg = new QDialog()dlg->show(); 当然,这儿用指针(即分配到heap中)不是必须的。 (有疑问?或者有时发现窗口一闪而过?那么你需要了解C、C++中变量的作用域和生存周期)。模态QDialog dlg;dlg.exec(); 这种情况下,我们一般都是将对象分...原创 2018-07-20 20:47:26 · 1254 阅读 · 0 评论 -
isHiden和isVisible的区别(可是有nativeEvent进行设置)
1、isHiden只是返回部件的隐藏属性,并不能表示部件当前的真实状态。比如A部件有个子部件B,而A处于隐藏状态,子部件B必然也不可见,但子部件B本身的isHiden还是为false。 2、判断部件是否可见应该用isVisible属性。 3、对于一个顶层窗口来说,虽然可以不用考虑以上两条,但还是建议使用isVisible来判断可见性。 还有值得注意...原创 2018-07-13 21:24:46 · 4458 阅读 · 0 评论 -
QDialog之屏蔽Esc键(简单深刻,要么重写keyPressEvent然后break忽略此事件,要么重写eventFilter然后return,都是为了忽略此事件)
源码分析 通过查看QDialog的源码,我们很容易会发现keyPressEvent事件中,当按下Esc键时,会默认执行reject()。void QDialog::keyPressEvent(QKeyEvent *e){ // Calls reject() if Escape is pressed. Simulates a button // click ...原创 2018-07-13 12:26:16 · 2147 阅读 · 0 评论 -
QWidget类中默认是忽略inputMethodEvent事件(要获取输入的内容就必须使用这个事件)
常用事件 因为所有和界面相关的类都是继承自QWidget类,所以QWidget类有的时间和方法,在每个界面相关的类中都有,最常用的一些事件如下:// bool event(QEvent *); // virtual void mousePressEvent(QMouseEvent *); // virtual void mouseReleaseEven...原创 2018-07-18 21:50:39 · 1958 阅读 · 0 评论 -
QCombobox设置下拉框的宽度
由于作者不习惯该编辑器,只是贴出上本文的截图,详见:https://www.yuque.com/docs/share/f2c256c6-1bbd-47dc-8084-5fa1be29b95b原创 2018-07-25 10:16:06 · 3625 阅读 · 0 评论 -
QDialog在hide()之后,就被销毁的原因
int QDialog::exec(){ Q_D(QDialog); if (d->eventLoop) { qWarning("QDialog::exec: Recursive call detected"); return -1; } bool deleteOnClose = testAttribute(Qt::...原创 2018-07-12 11:21:26 · 2117 阅读 · 1 评论 -
QDialog在hide()之后,就被销毁的原因
一路跟踪源码,关键就是这两句:int QDialog::exec(){ Q_D(QDialog); if (d->eventLoop) { qWarning("QDialog::exec: Recursive call detected"); return -1; } bool deleteOnClose = tes...原创 2018-08-08 09:30:18 · 2224 阅读 · 0 评论 -
QDialog,QWidget实现模态及非模态
模态QDialogQDialog dlg(this);dlg.exec();QDialog *pDlg=new QDialog(this);pDlg->setModal(true);pDlg->show();非模态QDialogQDialog *pDlg=new QDialog(this);pDlg->show(); QDialog实...原创 2018-08-08 09:29:25 · 1016 阅读 · 0 评论 -
QWidget居中显示
须知以下函数只要继承QWidget都可以使用. 例如 QDialog, QPushButton( -v- 一个居中的”引爆按钮”) 关于坐标问题: qt窗口坐标原点是在”左上角”的.如图, (x2, y2)是我窗口的分辨率的一半 无论目前我的窗口在什么位置,我只要把窗口原点设置为(x1, y1)就行了. 所以目前我要获得(x1, y1)的值, 那就很...原创 2018-08-07 09:58:05 · 3139 阅读 · 0 评论 -
窗体的基类中没有设定大小,所以才不能居中,若要窗体居中,必须使用setfixedsize()函数或者resize()函数设定窗体的大小,居中才能正常使用
/** *构建函数中move至中心坐标时, 必须应用setFixedSize(500,500); 否则达不到期望居中显示的目标 */ ialog:Dialog(QObject *parent=0):QDialog(parent) { ... this->setFixedSize(500,500); //这句必须添加 this-&g...原创 2018-08-07 09:57:53 · 3339 阅读 · 0 评论 -
QWidget之Alien与Native小记
示例 创建 a -> b -> c -> d -> e 共5个widget 考虑它们各自的 parentWidget() nativeParentWidget() window() 分别返回什么呢?#include <QtGui>#include <QtCore>...原创 2018-08-07 09:56:57 · 526 阅读 · 0 评论