運行此代碼並添加一些欄。
void MainWindow::on_tabWidget_tabBarDoubleClicked(int index)
{
qDebug() << index << ui->tabWidget->tabBar()->geometry();
}
你會看到這樣的事情:
0 QRect(0,0 288x29)
2 QRect(0,0 288x29)
("G:/x.txt", "G:/xx.txt", "") //something was added
3 QRect(0,0 311x29) //width increased
5 QRect(0,0 311x29)
4 QRect(0,0 311x29)
正如你現在寬度爲311x29
。並嘗試使用此:
void MainWindow::on_tabWidget_tabBarDoubleClicked(int index)
{
ui->tabWidget->removeTab(index);
qDebug() << index << ui->tabWidget->tabBar()->geometry();
}
結果可能是這樣的:
2 QRect(0,0 221x29)
2 QRect(0,0 154x29)
1 QRect(0,0 50x21)
0 QRect(0,0 0x0)
正如你所看到的,我刪除標籤和TabBar變小。 TabBar被自動調整大小。您在紅框區域不TabBar
要增加一些選項卡,可以提供特殊的按鈕,或者使用tabBarDoubleClicked
信號太多,但使用count()
方法要知道,多標籤如何在你的widget現在。
編輯:
例如:
void MainWindow::on_tabWidget_tabBarDoubleClicked(int index)
{
int height = ui->tabWidget->tabBar()->height();
ui->tabWidget->tabBar()->setGeometry(0,0,ui->tabWidget->geometry().width(), height);
qDebug() << index << ui->tabWidget->tabBar()->geometry();
}
當然,你應該setGeometry
在另一個地方(在構造函數中也許),但我沒有這樣做更小的代碼。現在tabBar更大,但設計或其他方面沒有任何變化。結果:
2 QRect(0,0 311x29)
1 QRect(0,0 311x29)
-1 QRect(0,0 311x29)
-1 QRect(0,0 311x29)
正如你所看到的,-1
出現在輸出端,當我在區域中單擊在沒有任何標籤(無setGeometry
這只是空白區域),它的出現,讓知道你能抓住這個信號。當您的索引等於-1
時,您可以創建新的選項卡(或打開一些對話框讓用戶進行一些設置)。我認爲這是你所需要的。
另一種方式:
QPushButton *m_addButton = new QPushButton("+", this);
QPushButton *m_addButton1 = new QPushButton("-", this);
m_addButton->resize(15,15);
m_addButton1->resize(15,15);
ui->tabWidget->tabBar()->setTabButton(0, QTabBar::RightSide, m_addButton);
ui->tabWidget->tabBar()->setTabButton(0, QTabBar::LeftSide, m_addButton1);
結果:
好了,所以它絕對不是標籤欄的一部分。任何想法如何擴大標籤欄或其他方法來捕捉該地區的雙擊? – Thomas 2014-10-11 18:25:35
@Thomas請看我的編輯。 – Chernobyl 2014-10-11 18:35:48
好吧,我得知我將tabBar的寬度設置爲tabWidget的寬度,但我試圖找出實際上它在哪裏。如果我在構造函數中這樣做,那麼TabBar在添加選項卡時會調整大小,所以它不起作用。如果我在添加選項卡時執行此操作,它會正確設置尺寸,但我想它會再次被重置,因爲單擊空白區域將不會執行任何操作。如果我在收到雙擊時執行此操作,則只有在雙擊空白區之前雙擊某個選項卡時才能正常工作。你有沒有正常工作? – Thomas 2014-10-11 19:02:37