2014-10-12 102 views
0

我需要處理調整大小的列寬度QTableWidget如何處理列寬度大小調整事件

我該怎麼做?

-

我談論事件,當光標位於下邊框之間頭部分,鼠標左鍵向下,鼠標移動。

+0

更多細節將是有益的,但搜索QT事件過濾器 – 2014-10-12 13:34:02

+0

@NicolasHolthaus可以毫不事件過濾器來完成。請看我的答案。 – Chernobyl 2014-10-12 14:59:03

回答

1

嘗試連接ui->tableWidget->verticalHeader()(它返回QHeaderViewsectionResized()信號到某個插槽。

工作實施例:

新信號和槽語法+ lambda表達式

connect(ui->tableWidget->horizontalHeader(),&QHeaderView::sectionResized,[=](int logicalIndex, int oldSize, int newSize) {//with lambda 
    qDebug() << "works" << logicalIndex << oldSize << newSize; 
}); 

輸出:

works 0 115 116 
works 0 116 115 
works 1 100 101 
works 1 101 102 

同時添加CONFIG += c++11親文件。

實施例與舊的語法:

在報頭:

private slots: 
    void clicked(int, int, int); 

在構造:

connect(ui->tableWidget->horizontalHeader(),SIGNAL(sectionResized(int,int,int)),this, SLOT(clicked(int,int,int))); 

插槽:

void MainWindow::clicked(int logicalIndex, int oldSize, int newSize) 
{ 
    qDebug() << "works" << logicalIndex << oldSize << newSize; 
} 

輸出:

works 0 106 107 
works 0 107 108 
works 1 100 101 
works 1 101 102 
works 1 102 103 

選擇最適合你,但請注意,新的語法有:信號和槽的存在

  • 編譯時間檢查 類型的,或者如果Q_OBJECT丟失。
  • 參數可以通過typedefs或使用不同的名稱空間說明符 ,它可以工作。如果存在的隱式轉換 (例如,從QString時,的QVariant)
  • 它可以連接到QObject的任何成員的功能,不但 槽
  • 可能性自動轉換的類型。

查看更多信息:http://qt-project.org/wiki/New_Signal_Slot_Syntax

+0

@Ufx我添加了更多有用的信息,你應該使用另一個信號,但我測試了它,它現在可以工作。我添加了非常詳細的解釋。 – Chernobyl 2014-10-12 14:45:51