qt dockqt tabwidget美化标签模式怎么放上端

最近遇到一个问题,需要将两个分开dockWidget窗口在软件启动时自动合并到一起,类似如下这种形式:
方法如下:
在父窗口中调用函数
void QMainWindow::tabifyDockWidget (QDockWidget * first, QDockWidget * second )
这个函数会将两个dockWidget窗口组成一个Widget stack。
但这样调用完还有一个问题,就是默认显示的是第2个窗口,但我们一般会希望默认显示第一个窗口,这时可以让第一个widget调用函数
void QWidget::raise () [slot]
例如:first-&raise();
这个函数会将调用者从widget stack中拉升。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:21361次
排名:千里之外
原创:32篇
转载:30篇
(1)(10)(3)(3)(3)(2)(1)(2)(3)(2)(7)(11)(3)(4)(6)(2)class&MainWindow&:&public&QMainWindow{&&&&Q_OBJECTpublic:&&&&MainWindow();private&slots:&&&&void&newLetter();&&&&void&save();&&&&void&print();&&&&void&undo();&&&&void&about();&&&&void&insertCustomer(const&QString&&customer);&&&&void&addParagraph(const&QString&&paragraph);
3.状态栏设置状态栏信息的函数例子:
statusBar()-&showMessage(tr("Ready"));
4.文件打开和保存对话框
QString&fileName&=&QFileDialog::getSaveFileName(this,&&&&&&&&&&&&&&&&&&&&&&&&tr("Choose&a&file&name"),&".",&&&&&&&&&&&&&&&&&&&&&&&&tr("HTML&(*.html&*.htm)"));
5.再说下QAction
&&&&newLetterAct&=&new&QAction(QIcon(":/images/new.png"),&tr("&New&Letter"),&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&this);&&&&newLetterAct-&setShortcuts(QKeySequence::New);&&&&newLetterAct-&setStatusTip(tr("Create&a&new&form&letter"));&&&&connect(newLetterAct,&SIGNAL(triggered()),&this,&SLOT(newLetter()));
通过调用setStatusTip可以设置action提示信息6.QTextDocument对象原文解释:The QTextDocument class holds formatted text that can be viewed and edited using a QTextEdit.通过QTextEdit的document可以获取QTextDocument对象假定需要响应文档撤销事件一个可能的例子就是:
void&MainWindow::undo(){&&&&QTextDocument&*document&=&textEdit-&document();&&&&document-&undo();}
7.QTextCursorThe QTextCursor class offers an API to accDuess and modify QTextDocuments.我们就可以得出QTextCursor访问和修改QTextDocument,QTextDocumnt显示QTextEdit内容文本。8.QDockWidgetThe QDockWidget class provides a widget that can be docked inside a QMainWindow floated as a top-level window on the desktop.关于Dock的用法如下:设置Dock为左右结构
dock-&setAllowedAreas(Qt::LeftDockWidgetArea&|&Qt::RightDockWidgetArea);
设置Dock内容控件dock-&setWidget(customerList);把这个dock放在窗体右边addDockWidget(Qt::RightDockWidgetArea, dock);9.这个例子还有其他的对象比如QListWidget以后再看吧不过这一篇感觉有几个疑惑的地方比如:
&&&&QDockWidget&*dock&=&new&QDockWidget(tr("Customers"),&this);&&&&dock-&setAllowedAreas(Qt::LeftDockWidgetArea&|&Qt::RightDockWidgetArea);&&&&customerList&=&new&QListWidget(dock);&&&&customerList-&addItems(QStringList()&&&&&&&&&&&&&&&"John&Doe,&Harmony&Enterprises,&12&Lakeside,&Ambleton"&&&&&&&&&&&&&&&"Jane&Doe,&Memorabilia,&23&Watersedge,&Beaton"&&&&&&&&&&&&&&&"Tammy&Shea,&Tiblanka,&38&Sea&Views,&Carlton"&&&&&&&&&&&&&&&"Tim&Sheen,&Caraba&Gifts,&48&Ocean&Way,&Deal"&&&&&&&&&&&&&&&"Sol&Harvey,&Chicos&Coffee,&53&New&Springs,&Eccleston"&&&&&&&&&&&&&&&"Sally&Hobart,&Tiroli&Tea,&67&Long&River,&Fedula");&&&&dock-&setWidget(customerList);&&&&addDockWidget(Qt::RightDockWidgetArea,&dock);&&&&viewMenu-&addAction(dock-&toggleViewAction());&&&&dock&=&new&QDockWidget(tr("Paragraphs"),&this);
其中的dock new了2次并没有调用相应的delete.不知道QT具体是如何实现的另外在QT的例子中在程序结束的时候并没有销毁new出来的指针不知道QT有内在机制保证内存不会泄露还是?
阅读(2543)qt如何在标签页切换时执行相应的动作?_百度知道
qt如何在标签页切换时执行相应的动作?
tabWidget比如说。connect(ui-&gt,而当点击其他标签页时则隐藏。我想应该用信号和槽?我放在了构造函数中,但是connect()语句应该放在什么地方呢;groupBox,SIGNAL(currentChanged(int))。另外,不起作用啊,我的connect()语句写的正确吗?编译时没有错误,ui-&gt,SLOT(setGroupHidden())),我只有在点击某个特定的标签页时才显示groupbox
提问者采纳
第一个标签ui-&gt,SIGNAL(currentChanged(int)).;&#47.;setHidden(true).,this.;tabW};groupBox_2-&gt..;groupBox-&gt,SLOT(setGroupHidden(int))):void setGroupHidden(int index){if(index == 0){&#47.如果你的groupbox是在每个标签页都提前布局好的 那么可以这样写connect语句connect(ui-&槽函数定义..;}if(index == 1){ui-&gt..;setHidden(true)
提问者评价
谢谢!我明白了!
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁仿VS2010的Dock样式,出现Dock方向标签 - 下载频道
- CSDN.NET
仿VS2010的Dock样式,出现Dock方向标签
仿VS2010的Dock样式,出现Dock方向标签
VS2010/VS2012开发。
实现类似VS2010的拖动Dock样式。
图例请浏览:
Qt ---仿VS2010的Dock样式http://zhouzhenren163./blog/static//
Ctrl+V 垂直拆分, Ctrl+H 水平拆分
要将某个QDockWidget
Dock 到四周的某边上,如顶上,可以右键单击QDockWidget的标题栏,在弹出的菜单中选择 置顶. 或者拖动此QDockWidget到红色箭头标记的地方并释放鼠标,也可完成Dock
因为默认,当顶部只有一个QDockWidget停靠在上面时,可以拖动任意一个QDockWidget到顶部,然如果有多个QDockWidget停靠在上面时,无法拖动一个QDockWidget到顶部停靠,并完全占用顶部。所以,此程序可以解决这种问题。
若要了解实现原理,请参阅本人博客:Qt ---仿VS2010的Dock样式http://zhouzhenren163./blog/static//
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行QDockWidget类继承与QWidget类,用于停靠窗口的管理。在主窗口中,先设置中心控件,然后实例化QDockWidget对象,通过setFeatures( )设置停靠窗口的窗体特性,通过
setAllowedAreas(& )设置窗体可停靠的区域。具体如下:
void setFeatures(DockWidgetFeatures features )
QDockWidget::DockWidgetClosable
停靠窗可关闭
QDockWidget::DockWidgetMovable
停靠窗可移动
QDockWidget::DockWidgetFloatable
停靠窗可浮动
QDockWidget::DockWidgetVerticalTitleBar
标题栏垂直放置
QDockWidget::AllDockWidgetFeatures
可关闭、可移动、可浮动
QDockWidget::NoDockWidgetFeatures
不可关闭、不可移动、不可浮动
void setAllowedAreas ( Qt::DockWidgetAreas areas )
Qt::LeftDockWidgetArea
可在中央控件的左侧停靠
Qt::RightDockWidgetArea
可在中央控件的右侧停靠
Qt::TopDockWidgetArea
可在中央控件的顶部停靠
Qt::BottomDockWidgetArea
可在中央控件的底部停靠
Qt::AllDockWidgetAreas
可在中央控件的任意方向停靠
Qt::NoDockWidgetArea
只可停靠在插入处
dockwindows.h
#ifndef DOCKWINDOWS_H
#define DOCKWINDOWS_H
#include &QtGui&
class DockWindows : public QMainWindow
DockWindows(QWidget *parent = 0, Qt::WFlags flags = 0);
~DockWindows();
#endif // DOCKWINDOWS_H
dockwindows.cpp
#include "dockwindows.h"
#include &QDockWidget&
DockWindows::DockWindows(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
setWindowTitle(tr("Dock Windows"));
QTextEdit *edt = new QTextEdit(tr("Main Window"),this);
setCentralWidget(edt); //把edt设置为中心控件
//停靠窗口1:
QDockWidget *dockWidget1 = new QDockWidget(tr("Dock Window 1"),this);
dockWidget1-&setFeatures(QDockWidget::DockWidgetMovable);
dockWidget1-&setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
QTextEdit *edt1 = new QTextEdit(tr("Window 1"));
dockWidget1-&setWidget(edt1);
addDockWidget(Qt::RightDockWidgetArea,dockWidget1);
//停靠窗口2:
QDockWidget *dockWidget2 = new QDockWidget(tr("Dock Window 2"),this);
dockWidget2-&setFeatures(QDockWidget::DockWidgetFloatable | QDockWidget::DockWidgetClosable);
QTextEdit *edt2 = new QTextEdit(tr("Window 2"));
dockWidget2-&setWidget(edt2);
addDockWidget(Qt::LeftDockWidgetArea,dockWidget2);
//停靠窗口3:
QDockWidget *dockWidget3 = new QDockWidget(tr("Dock Window 3"),this);
dockWidget3-&setFeatures(QDockWidget::AllDockWidgetFeatures);
QTextEdit *edt3 = new QTextEdit(tr("Window 3"));
dockWidget3-&setWidget(edt3);
addDockWidget(Qt::BottomDockWidgetArea,dockWidget3);
DockWindows::~DockWindows()
在本例中还用到了QMainWindow类的addDockWidget()方法。使用情况请查阅QtAssistant。
阅读(...) 评论()

我要回帖

更多关于 qt list widget 的文章

 

随机推荐