返回

《ASCE1885的Qt学习记录》の停靠窗口

发布时间:2022-11-26 01:09:43 210
# windows

本文讲讲停靠窗口的使用吧,实例效果如下:

 

《ASCE1885的Qt学习记录》の停靠窗口_qt

 

本实例实现的停靠窗口功能如下:停靠窗口1只可在主窗口的左边和右边停靠;停靠窗口2只可在浮动和在右部停靠两种状态间切换,并且不可移动;停靠窗口3可实现停靠窗口的各个状态。

 

=====================实现头文件dockWindows.h===================

#ifndef DOCKWINDOWS_H
#define DOCKWINDOWS_H
#include <QtGui/QMainWindow>
class DockWindows : public QMainWindow
{
Q_OBJECT
public:
DockWindows(QWidget *patent=0);
};
#endif // DOCKWINDOWS_H

====================实现源文件dockWindows.cpp===================
#include "dockwindows.h"
#include <QtGui/QTextEdit>
#include <QtGui/QDockWidget>
DockWindows::DockWindows(QWidget *parent)
:QMainWindow(parent)
{
setWindowTitle(tr("DockWindows"));
QTextEdit *te = new QTextEdit(this);
te->setText(QString::fromLocal8Bit("主窗口"));
te->setAlignment(Qt::AlignCenter);
setCentralWidget(te);
//停靠窗口1
QDockWidget *dock = new QDockWidget(QString::fromLocal8Bit("停靠窗口1"), this);
dock->setFeatures(QDockWidget::DockWidgetMovable);
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
QTextEdit *te1 = new QTextEdit();
te1->setText(QString::fromLocal8Bit("窗口1"));
dock->setWidget(te1);
addDockWidget(Qt::RightDockWidgetArea, dock);
//停靠窗口2
dock = new QDockWidget(QString::fromLocal8Bit("停靠窗口2"), this);
dock->setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetClosable);
QTextEdit *te2 = new QTextEdit();
te2->setText(QString::fromLocal8Bit("窗口2"));
dock->setWidget(te2);
addDockWidget(Qt::RightDockWidgetArea, dock);
//停靠窗口3
dock = new QDockWidget(QString::fromLocal8Bit("停靠窗口3"),this);
dock->setFeatures(QDockWidget::AllDockWidgetFeatures);
QTextEdit *te3 = new QTextEdit();
te3->setText(QString::fromLocal8Bit("窗口3"));
dock->setWidget(te3);
addDockWidget(Qt::BottomDockWidgetArea, dock);
}

由上面代码可以看出,设置停靠窗口的一般步骤是:
1) 创建一个QDockWidget对象的停靠窗体;
2) 设置此停靠窗体的属性,通常调用setFeatures()及setAllowedAreas()两种方法;
3) 新建一个要插入停靠窗体的控件,常用的一般为QListWidget和QTextEdit;
4) 把控件插入停靠窗体中,调用QDockWidget的setWidget()方法;
5) 使用addDockWidget()方法在QMainWindow中加入此停靠窗体。

其中,setAllowedAreas()方法设置停靠窗体可停靠的区域,原型如下:
void setAllowedAreas (Qt::DockWidgetAreas areas)
其中参数Qt::DockWidgetAreas指定了停靠窗体可停靠的区域,包括以下几种:
Qt::LeftDockWidgetArea //左侧停靠
Qt::RightDockWidgetArea //右侧停靠
Qt::TopDockWidgetArea //顶端停靠
Qt::BottomDockWidgetArea //底部停靠
Qt::AllDockWidgetAreas //任意(以上四个)部位停靠
Qt::NoDockWidgetArea //只可停靠在插入处

setFeatures()方法设置停靠窗体的特性,原型如下:
void setFeatures(DockWidgetFeatures features)
参数QDockWidget::DockWidgetFeatures指定停靠窗体的特性,包括以下几种:
QDockWidget::DockWidgetClosable //停靠窗可关闭
QDockWidget::DockWidgetMovable //停靠窗可移动
QDockWidget::DockWidgetFloatable //停靠窗可浮动
QDockWidget::AllDockWidgetFeatures //拥有停靠窗的所有特性
QDockWidget::NoDockWidgetFeatures //停靠窗不可移动、不可关闭、不可浮动

========================工程pro文件========================
#-------------------------------------------------
#
# Project created by QtCreator 2010-08-17T22:46:43
#
#-------------------------------------------------
QT += core
TARGET = DockWindows
CONFIG += windows
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp /
dockwindows.cpp
HEADERS += /
dockwindows.h

=======================main函数===========================
#include <QtGui/QApplication>
#include "dockwindows.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
DockWindows window;
window.show();
return app.exec();
}

 

 

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线