• 4820阅读
  • 3回复

[提问]QTableWidget某行高改变发出什么信号? [复制链接]

上一主题 下一主题
离线fzx374
 

只看楼主 倒序阅读 楼主  发表于: 2011-02-17
我的目的是让整个表格所有行行高都随之同步改变。
离线fzx374

只看该作者 1楼 发表于: 2011-02-17
没有人帮助,自己动手。花了8个小时,终于功成。
1、在头文件中定义一个QHeaderView类型变量,及定义将要用到的槽
  QHeaderView *header;
    void myRowResized(int logindex, int oldheight, int newheight);
2、在其构建函数中,对变量赋值,建立相应连接
  header = this->verticalHeader();
    connect(header, SIGNAL(sectionResized(int,int,int)), this, SLOT(myRowResized(int,int,int)));
3、建立槽函数
void myTableWidget::myRowResized(int logindex, int oldheight, int newheight)
{
    disconnect(header, SIGNAL(sectionResized(int,int,int)), this, SLOT(myRowResized(int,int,int)));

    QTableWidgetSelectionRange range ;
    QList<QTableWidgetSelectionRange> ranges = selectedRanges() ;
    if (!ranges.isEmpty()) {        //可能分几块不连续选择区
        range = ranges.first();     //只对第一块操作

        int add = newheight - oldheight;

        for (int i= range.topRow(); i<=range.bottomRow(); ++i){
            if (i != logindex) {
                int height = this->rowHeight(i) + add;
                this->setRowHeight(i, height);
            }
        }
    }
    connect(header, SIGNAL(sectionResized(int,int,int)), this, SLOT(myRowResized(int,int,int)));
}
4、测试成功

    
离线6a209
只看该作者 2楼 发表于: 2011-02-17
学习了!
离线fzx374

只看该作者 3楼 发表于: 2011-02-17
随着该问题的解决,越来越喜欢Qt4了。
它能在我的ubuntu跑的欢,应客户要求,随时可以移植应用程序到Linux下。
快速回复
限100 字节
 
上一个 下一个