轉載自http://www.cnblogs.com/hicjiajia/archive/2012/05/30/2526829.html
哈哈,這個暑假在家里學習Qt,有了一些理論知識后,就想動手搞個什么小東西,在Qt Demo中看到了一個簡單的文本編輯器,我就研究它了,當然Qt帶的這個例子功能十分簡單,經過幾天不斷的摸索和實踐我也搞了一個類似的,不過功能要強大,而且比Windows 默認帶的那個記事本也要強,呵呵,后來就想繼續擴充功能,時下十分流行的那個功能“一個窗口多個標簽頁顯示”就如IE8那種,可以在一個窗口打開多個網頁,在Qt中當然要用QTabWidget,但是據我所知這個控件並沒有提供關閉按鈕,這個很麻煩了,google一晚上,在國外某個論壇上看到了解決方案:在Qt 4.5 中 QTabWidget 多了一個屬性 tabsClosable ,將其設置為True即可出現關閉按鈕。
默認情況下,每個標簽上的關閉按鈕是沒有任何響應的,我們需要自己動手為他添加關閉響應。
關閉信號為 void tabCloseRequested(int index)
關閉函數為 void removeTab(int index)
注意關閉標簽的是一個普通公共函數,不是槽函數,不可以直接與信號相連,我們需要自己手動定義個接受 int類型的槽函數,然后把參數再傳遞給關閉函數。
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QTabWidget> #include <QTextEdit> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(ui->tabWidget,SIGNAL(tabCloseRequested(int)),this,SLOT(removeSubTab(int))); } MainWindow::~MainWindow() { delete ui; } void MainWindow::removeSubTab(int index) { ui->tabWidget->removeTab(index); } void MainWindow::on_pushButton_clicked() { QTextEdit *edit=new QTextEdit; ui->tabWidget->addTab(edit,"hitemp 1"); }

