qt创建自定义标题栏
来源:互联网 发布:楼市泡沫 知乎 编辑:程序博客网 时间:2024/05/17 20:35
问题描述:利用QT自带的QDialog或QMainwindow创建的窗口,这些窗口的标题栏都有固定的形式,较难修改。
我们希望创建自定义形式的标题栏,实现修改背景图片图标、在特定地方加上按钮等功能。
实现方法:创建QWidget,在QWidget上实现自定义标题栏的样式,在其上实现鼠标拖动事件(Qt重新实现QMouseEvent实现自定义窗口可拖动);将主窗口修改为QFrameLess形式(即没有标题栏的形式),用QVLayout将这个标题栏widget加入到主窗口的布局中。
具体实现:
(1)创建继承QWidget的界面titlebar,可以将它设计为任何形式的自定义标题栏。
(2)在主窗口程序mainwindow.cpp中设置窗口为FramelessWindowHint形式,即没有标题栏的形式;在通过QVBoxLayout将标题栏和mainwindow中的其他部件拼接到一起;在maiwindow类中通过重新实现QMouseEvent实现主窗口的可拖动(鼠标事件的实现参考:Qt重新实现QMouseEvent实现自定义窗口可拖动)。
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){ this->setWindowFlags(Qt::FramelessWindowHint); QWidget *wd = new QWidget(this); QVBoxLayout *layout_all = new QVBoxLayout; layout_all->setContentsMargins(0,0,0,0); layout_all->setSpacing(0);... layout_all->addWidget(title); layout_all->addWidget(tabWidget);... wd->setLayout(layout_all); this->setCentralWidget(wd);}
(3)另外需要注意的是:自定义标题栏中左上角通常都有 最大化、最小化和关闭按钮。 这些按钮需要在创建titlebar界面类时自己创建,并且用QT的信号槽机制,使用connect函数,将他们的clicked信号连接到mainwindow的showMaximized()、showMinimized()和close()槽函数。
阅读全文
0 0
- qt创建自定义标题栏
- Qt 个性化标题栏,自定义标题栏
- ...Qt实现--自定义标题栏
- 自定义 Qt 窗口标题栏
- QT 自定义标题栏
- qt 自定义标题栏
- Qt 自定义标题栏
- Qt:自定义标题栏(QMainWindow)
- Android 创建自定义标题栏
- Qt 之 自定义窗口标题栏
- Qt自定义外观--自定义标题栏的窗口
- Qt自定义外观--自定义标题栏的窗口
- 【Qt】Qt之自定义界面(添加自定义标题栏)【转】
- Qt 无边框窗口自定义标题栏
- Qt 扁平化MainWindow以及自定义标题栏
- Qt自定义标题栏并实现拖拽
- 自定义QT标题栏和背景·边框
- 创建自定义Qt类型
- TensorFlow计算模型--计算图
- iPhoneX无导航栏页面适配
- 创建图片的缩略图
- Android属性android:priority的使用姿势
- 3D Touch实现以及相应界面的跳转(最新)
- qt创建自定义标题栏
- 实现表格隔行/隔列变色
- 一周小结(3)
- python在回调函数中获取返回值
- JavaScript的callback
- HTTP & HTTPS网络协议重点总结(基于SSL/TLS的握手、TCP/IP协议基础、加密学)
- Flume的基本使用介绍
- 使用iText JAR生成PDF
- sublime 3 添加到win7默认打开选项中