Qt中建立DockWidget的代码
来源:互联网 发布:ps在mac上如何下载 编辑:程序博客网 时间:2024/06/07 20:52
Qt中使用dock(浮窗)是一个多界面编程的很好的思路。
一、操作步骤
(1)新建一个widget的继承类(如myWidget);
(2)在继承类myWidget的函数中添加各控件;
(3)在继承类myWidget中将各控件添加到一个layout中,并在该类下执行setLayout函数。
(4)在主窗口(MainWindow)中新建一个QDockWidget对象、一个myWidget对象。
(5)在该QDockWidget对象中执行setwidget函数,输入参数时myWidget对象。
二、小技巧
(1)与菜单项联系起来:
在菜单栏中利用QDockWidget中的toggleViewAction,将dock浮窗和菜单栏中的菜单项联系起来。
(2)将多个dock浮窗折叠起来:tabifyDockWidget
(3)四个边均有dock浮窗时,设置角落归谁的代码:
setCorner(Qt::BottomLeftCorner,Qt::LeftDockWidgetArea);//让左下角区域归于左边停靠区域
setCorner(Qt::BottomRightCorner,Qt::RightDockWidgetArea);//让右下角区域归于右边停靠区域
setCorner(Qt::TopLeftCorner,Qt::LeftDockWidgetArea);//让左上角区域归于左边停靠区域
setCorner(Qt::TopRightCorner,Qt::RightDockWidgetArea);//让右上角区域归于右边停靠区域
三、代码实例
(1)form_widget.h
#ifndef FORM_WIDGET_H#define FORM_WIDGET_H#include <QWidget>#include <QPushButton>#include <QLineEdit>#include <QGridLayout>namespace Ui {class Form_Widget;}class Form_Widget : public QWidget{ Q_OBJECTpublic: explicit Form_Widget(QWidget *parent = 0); ~Form_Widget();private: Ui::Form_Widget *ui; QPushButton *m_button1; QPushButton *m_button2; QLineEdit *m_lineedit1; QLineEdit *m_lineedit2; QGridLayout *m_layout;public: void func_create_widget();};#endif // FORM_WIDGET_H
(2)mainwindow.h
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QDockWidget>#include <QMenu>#include "form_widget.h"namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();private: Ui::MainWindow *ui; Form_Widget *m_widget_example; QDockWidget *m_dock1; QMenu *m_ViewMenu;public: void func_create_widget_dock(); void func_create_menu();};#endif // MAINWINDOW_H
(3)form_widget.cpp
#include "form_widget.h"#include "ui_form_widget.h"Form_Widget::Form_Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Form_Widget){ ui->setupUi(this); func_create_widget();}Form_Widget::~Form_Widget(){ delete ui;}void Form_Widget::func_create_widget(){ m_button1 = new QPushButton("button 1"); m_button2 = new QPushButton("button 2"); m_lineedit1 = new QLineEdit("lineedit 1"); m_lineedit2 = new QLineEdit("lineedit 2"); m_layout = new QGridLayout; m_layout->addWidget(m_lineedit1,0,0,1,1); m_layout->addWidget(m_button1,0,1,1,1); m_layout->addWidget(m_lineedit2,1,0,1,1); m_layout->addWidget(m_button2,1,1,1,1); this->setLayout(m_layout);}
(4)mainwindow.cpp
#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); this->resize(QSize(800,600)); func_create_widget_dock(); func_create_menu();}MainWindow::~MainWindow(){ delete ui;}void MainWindow::func_create_widget_dock(){ m_dock1 = new QDockWidget(this); m_widget_example = new Form_Widget; m_dock1->setWindowTitle("dock 1"); m_dock1->setWidget(m_widget_example); this->addDockWidget(Qt::RightDockWidgetArea,m_dock1);}void MainWindow::func_create_menu(){ m_ViewMenu = new QMenu(this); m_ViewMenu = menuBar()->addMenu(QString::fromLocal8Bit("窗口")); m_ViewMenu->addAction(m_dock1->toggleViewAction());}
(5)main.cpp
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}
四、界面实例
20171117
- Qt中建立DockWidget的代码
- QT中dockWidget详细教程
- dockwidget 设置里面的控件填满整个dockwidget的方法
- qt 多个dockWidget 合并及排序
- Qt中多模块的建立
- Qt软件开发文档6---dockWidget自定义标题栏
- Qt工程的建立
- Qt中计算一段代码的执行时间
- QT中动态链接库的建立,以及在QT中的引用,C++程序中的引用
- QT中动态链接库的建立,以及在QT中的引用,C++程序中的引用
- Qt开发环境的建立
- Qt开发环境的建立
- qt 代码中简化槽的代码量
- 触发器建立的代码
- Qt中QTreeView 与 QModel 建立联系
- VS中建立QT工程UNICODE问题
- VS2008环境中建立Qt程序
- 怎样向一个DockWidget中添加多个pushbutton按钮(两种方法)
- 每天一个Linux命令—mkdir
- Python数据结构之二叉排序树
- Codeforces Round 444 div2 D Ratings and Reality Shows (双指针)
- 关于java.sql.SQLException: Connections could not be acquired from the underlying database!
- Spark 1.6 内存管理模型( Unified Memory Management)分析
- Qt中建立DockWidget的代码
- boot2docker 搭建完美的开发环境
- jquery 用动态加载js来解决浏览器缓存
- android 新版的设计规范(Material Design)
- Jmeter分布式测试
- CC攻击
- java中类和对象的图形化理解,简单明了
- PHP之FTP、SFTP上传下载
- Linux环境下Python2 升级为 Python3