簡體   English   中英

如何處理列寬調整大小事件

[英]How to handle column width resizing event

我需要處理QTableWidget列寬調整大小。

我怎樣才能做到這一點?

-

我說的是當光標在標題區域之間的邊界下,鼠標左鍵按下並且鼠標移動時的事件。

嘗試將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添加到pro文件。

舊語法示例:

在標題中:

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。
  • 參數可以由typedef定義,也可以與其他名稱空間說明符一起使用,並且可以使用。
  • 如果存在隱式轉換(例如,從QString到QVariant),則可以自動轉換類型
  • 可以連接到QObject的任何成員函數,而不僅僅是插槽。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM