Qt学习:Qt中QDockWidget的简单用法
2013-05-09 17:14
471 查看
下面是这个例子的效果:
当然还可以控制两个停靠窗口停在四个停靠区的哪个区,这里不贴效果图了。
代码如下:
总结一下,创建一个停靠窗口大概需要以下几个步骤:
1、创建一个自己的widget窗口,并设置它的各种属性(这里创建了一个QCalendarWidget和一个QTextEdit对象,并对其一些属性进行了设置)。
2、创建一个QDockWidget对象,并设置这个QDockWidget对象的一些属性。
诸如: calendarDockWidget->setFeatures(QDockWidget::AllDockWidgetFeatures);
calendarDockWidget->setAllowedAreas(Qt::AllDockWidgetAreas);
3、把自己的widget窗口添加到这个停靠窗口中。
calendarDockWidget->setWidget(calendar); (这里说添加可能不太准确,一时找不懂合适的词来描述)。
4、把这个停靠窗口加到QMainWindow的指定的位置。
addDockWidget(Qt::RightDockWidgetArea,calendarDockWidget);
当然还可以控制两个停靠窗口停在四个停靠区的哪个区,这里不贴效果图了。
代码如下:
//dockwindow.h #ifndef DOCKWINDOW_H #define DOCKWINDOW_H #include <QMainWindow> class QMenu; class QToolBar; class QAction; class QTextEdit; class DockWindow : public QMainWindow { Q_OBJECT public: DockWindow(QWidget *parent = 0); ~DockWindow(); private slots: void newFile(); void save(); void about(); private: void createMenus(); void createActions(); void createToolBars(); void createStatusBars(); void createDockWindows(); QMenu *fileMenu; QMenu *viewMenu; QMenu *helpMenu; QToolBar *fileToolBar; QToolBar *viewToolBar; QToolBar *helpToolBar; QAction *newAction; QAction *saveAction; QAction *exitAction; QAction *aboutAction; QTextEdit *textEdit; }; #endif // DOCKWINDOW_H
//dockwindow.cpp #include <QtGui> #include "dockwindow.h" DockWindow::DockWindow(QWidget *parent) : QMainWindow(parent) { textEdit = new QTextEdit; setCentralWidget(textEdit); createActions(); createMenus(); createToolBars(); createStatusBars(); createDockWindows(); setWindowTitle(tr("Dock Window")); } void DockWindow::newFile() { textEdit->clear(); QMessageBox::about(this, tr("Dock Window"), tr("you triggered the" "\nnewFileSlot successfully")); } void DockWindow::save() { QMessageBox::information(this, tr("Dock Window"), tr("Save the file ?"), QMessageBox::Ok | QMessageBox::No | QMessageBox::Cancel); } void DockWindow::about() { QMessageBox::warning(this, tr("Dock Window"), tr("Thanks"),QMessageBox::Yes | QMessageBox::No); } void DockWindow::createActions() { newAction = new QAction(tr("&New"),this); newAction->setShortcut(QKeySequence::New); newAction->setStatusTip(tr("create a new file")); connect(newAction, SIGNAL(triggered()), this, SLOT(newFile())); saveAction = new QAction(tr("&Save"),this); saveAction->setShortcut(QKeySequence::Save); saveAction->setStatusTip(tr("save a exist file")); connect(saveAction, SIGNAL(triggered()), this, SLOT(save())); exitAction = new QAction(tr("E&xit"),this); exitAction->setShortcut(QKeySequence::Close); exitAction->setStatusTip(tr("quit the application")); connect(exitAction, SIGNAL(triggered()), this, SLOT(close())); aboutAction = new QAction(tr("About"),this); connect(aboutAction, SIGNAL(triggered()), this, SLOT(about())); } void DockWindow::createMenus() { fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(newAction); fileMenu->addAction(saveAction); fileMenu->addSeparator(); fileMenu->addAction(exitAction); viewMenu = menuBar()->addMenu(tr("&View")); helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(aboutAction); } void DockWindow::createToolBars() { fileToolBar = addToolBar(tr("&File")); fileToolBar->addAction(newAction); fileToolBar->addAction(saveAction); fileToolBar->addAction(exitAction); viewToolBar = addToolBar(tr("&View")); helpToolBar = addToolBar(tr("&Help")); helpToolBar->addAction(aboutAction); } void DockWindow::createStatusBars() { statusBar()->showMessage(tr("Ready")); } void DockWindow::createDockWindows() { QCalendarWidget *calendar = new QCalendarWidget; QDockWidget *calendarDockWidget = new QDockWidget(this); calendarDockWidget->setWindowTitle(tr("Calendar")); calendarDockWidget->setWidget(calendar); calendarDockWidget->setFeatures(QDockWidget::AllDockWidgetFeatures); calendarDockWidget->setAllowedAreas(Qt::AllDockWidgetAreas); addDockWidget(Qt::RightDockWidgetArea,calendarDockWidget); viewMenu->addAction(calendarDockWidget->toggleViewAction()); viewToolBar->addAction(calendarDockWidget->toggleViewAction()); QDockWidget *textDockWidget = new QDockWidget(this); textDockWidget->setWindowTitle(tr("About Me")); textDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::BottomDockWidgetArea); QTextEdit *myInfo = new QTextEdit(tr("<br>Welcom</br><br>blog address:hhtp://blog.csdn.net/qiurisuixiang</br>")); textDockWidget->setWidget(myInfo); addDockWidget(Qt::BottomDockWidgetArea, textDockWidget); viewMenu->addAction(textDockWidget->toggleViewAction()); viewToolBar->addAction(textDockWidget->toggleViewAction()); } DockWindow::~DockWindow() { }
//main.cpp #include "dockwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication app(argc, argv); DockWindow dockWindow; dockWindow.show(); return app.exec(); }
总结一下,创建一个停靠窗口大概需要以下几个步骤:
1、创建一个自己的widget窗口,并设置它的各种属性(这里创建了一个QCalendarWidget和一个QTextEdit对象,并对其一些属性进行了设置)。
2、创建一个QDockWidget对象,并设置这个QDockWidget对象的一些属性。
诸如: calendarDockWidget->setFeatures(QDockWidget::AllDockWidgetFeatures);
calendarDockWidget->setAllowedAreas(Qt::AllDockWidgetAreas);
3、把自己的widget窗口添加到这个停靠窗口中。
calendarDockWidget->setWidget(calendar); (这里说添加可能不太准确,一时找不懂合适的词来描述)。
4、把这个停靠窗口加到QMainWindow的指定的位置。
addDockWidget(Qt::RightDockWidgetArea,calendarDockWidget);
相关文章推荐
- qt之QTableWidget简单用法小结
- Qt学习: QTabWidget多页面部件的用法及程序示例
- qt QDockWidget QStackWidget的简单使用
- qt QDockWidget QStackWidget的简单使用
- Qt学习笔记:QMainWindow与QDockWidget
- qt QDockWidget QStackWidget的简单使用
- Qt学习: QListWidget的用法.
- Qt学习3之QDockWidget
- Qt学习-QString用法总结( setNum, number 函数)
- appWidget 简单入门学习笔记
- Qt学习4之QStackedWidget
- Qt QTableWidget的用法
- QT学习之Timer的用法
- Qt中QTableWidget用法总结
- Qt Qtableview 的一些用法 希望共同学习探讨
- 简单图形编程的学习(1)---文字 (Qt实现)
- OpenGL_Qt学习笔记之_02(绘制简单平面几何图形)
- qt 多个dockWidget 合并及排序
- OpenGL_Qt学习笔记之_02(绘制简单平面几何图形)
- Qt学习——简单的对话框程序