程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Qt 給QWidget添加工具欄,qtqwidget

Qt 給QWidget添加工具欄,qtqwidget

編輯:C++入門知識

Qt 給QWidget添加工具欄,qtqwidget


  在Qt中,給主窗口(QMainWindow類)添加工具欄非常方便,直接使用addToolBar 即可,如下所示:

fileToolBar = addToolBar(tr("&File"));
fileToolBar->addAction(fileNewAction);
fileToolBar->addAction(fileOpenAction);

     但是,addToolBar 是QMainWindow 類的函數,在QWidget類中沒有addToolBar類似的添加工具欄的函數,所以無法直接給QWidget類(QWidget的子類)添加工具欄。

     能不能在QWidget類窗口中添加工具欄呢?當然可以。考慮到工具欄QToolBar其實也是QWidget的子類(class Q_GUI_EXPORT QToolBar : public QWidget ),直接把工具欄當作普通的QWidget添加到窗口中好了。一般的,工具欄處於窗口的頂部,所以,可以采取布局,將工具欄置於頂部即可。

     我的例子是要創建一個可停靠的組件箱,在組件 箱上方顯示相應的工具欄,如下所示:

一、 代碼節選

//2.1 工具欄
  compsBoxToolBar = new QToolBar(tr("組件"),dockCompTools);
  compsBoxToolBar->setIconSize(QSize(16,16));
  compsBoxToolBar->addAction(compsNewAction);
  compsBoxToolBar->addAction(compsOpenAction);
  compsBoxToolBar->addAction(compsSaveAction);
...
  //2.2 工具箱主體
  listComp = new XCompListWidget();
...
  //2.3 文本提示框
  QLabel* lbl = new QLabel(this);
  lbl->setText(tr("組件說明:"));
  txtTipComp = new QTextEdit();
...
  //2.4 布局
  QVBoxLayout *vboxLayout1 = new QVBoxLayout();
  vboxLayout1->addWidget(compsBoxToolBar);//把工具欄作為一個widget添加到布局中
  vboxLayout1->addWidget(listComp);
  vboxLayout1->addWidget(lbl);
  vboxLayout1->addWidget(txtTipComp);
...
  //2.5 應用布局
  QWidget* dockWidgetContents = new QWidget();
  dockWidgetContents->setLayout(vboxLayout1);

二、結果展示

Image

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved