如何处理列宽调整大小事件

时间:2014-10-12 13:32:09

标签: c++ qt qtablewidget qt-signals

我需要处理QTableWidget中调整大小的列宽。

我该怎么做?

-

当光标位于标题部分之间的边界,鼠标左键停止且鼠标移动时,我会谈论事件。

1 个答案:

答案 0 :(得分: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。
  • 参数可以是typedef或不同的命名空间说明符, 它有效。
  • 如果存在隐式,则可以自动转换类型 转换(例如从QString到QVariant)
  • 不仅可以连接到QObject的任何成员函数 槽。

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