tabWidget与tab的geometry属性不一致,怎么处理?

xtqbp 2017-11-15 09:55:31
我在tabWidget中画一个tableWidget时,用:
1、tableWidget->setGeometry(tabWidget->Geometry())来设置tableWidget的位置时,水平滚动条显示不全,怎么解决呢?
我的解决办法是把tableWidget的高设置的小一点,但感觉这方法有点LOW,请大家指教!
2、另外:我打印了tabWidget tab tableWidget的geometry属性值,发现tab和tabWidget的宽和高都不一样,这是为什么呢?
代码如下:

    QTableWidget *TW_main = new QTableWidget();
TW_main->setColumnCount(10);
TW_main->setColumnWidth(0,20);
TW_main->setHorizontalHeaderLabels(heads);
//TW_main->setGeometry(ui->tab_data->geometry()); //这样会使水平滚动条显示不全
TW_main->setGeometry(QRect(0,
0,
ui->tabWidget_main->geometry().width(),
ui->tabWidget_main->geometry().height()-24)); //这种方法有点太low
TW_main->setParent(ui->tab_data);
qDebug() << "ui->tab_data->geometry() = " << ui->tab_data->geometry(); //tab_data 是 tabWidget_main的一个tab
qDebug() << "ui->tabWidget_main->geometry() = " << ui->tabWidget_main->geometry();
qDebug() << "TW_main->geometry() = " << TW_main->geometry();

打印出来的结果如下:
ui->tab_data->geometry() = QRect(0,0 640x480)
ui->tabWidget_main->geometry() = QRect(0,0 541x491)
TW_main->geometry() = QRect(0,0 541x467)
...全文
213 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xtqbp 2017-11-15
通过以上朋友的讨论,测试后得出结论: 1、如1、4楼所言,tabwidget与的子项目tab的大小是不同的,子项目tab默认是640x480; 2、要把tableWidget放到tabwidget中的子项目tab中时,tableWidget的高度要比tab小(标签的高度),所以要减掉标签的高度!
  • 打赏
  • 举报
回复
Liuzwang 2017-11-15
tabwidget的子项目tab的大小默认是640x480,你把tabwidget放大超过640x480,子项目tab的大小还是640x480
  • 打赏
  • 举报
回复
Liuzwang 2017-11-15
楼主,

tabwidget控件的大小打印出来后就是会比他的子控件tab要小。原因我不知道。
但是,你要是让tablewidget比tab的控件小,你设置大小的时候,不要用tabwidget来当参数,用他的子类tab当参数就可以了。
改成
TW_main->setGeometry(QRect(0,
0,
ui->tab_data->geometry().width(),
ui->tab_data->geometry().height()-24));
  • 打赏
  • 举报
回复
xtqbp 2017-11-15
1、是tableWidget; 2、当tableWidget中出现滚动条时,这个滚动条不是应该包含在tableWidget内的么?还是在tableWidget之外的啊?
  • 打赏
  • 举报
回复
军神关云长 2017-11-15
tabwidget是一个大窗体,tabwidget里面的tab是tabwiget里面的子窗体,他们的geometry肯定是不一样的,他们的宽高也就不一样。一般默认是tabwidget中的滚动条在tabwidget中内容显示不全时才会显示,tabwidget显示全时就不显示,也可以设置滚动条永远显示或者永远不显示,通过调用tabwidget的setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn)可设置滚动条一直显示。 When all of the area contents fits in the viewport, each scroll bar can be either visible or hidden depending on the scroll bar's Qt::ScrollBarPolicy. When a scroll bar is hidden, the viewport expands in order to cover all available space. When a scroll bar becomes visible again, the viewport shrinks in order to make room for the scroll bar.
  • 打赏
  • 举报
回复
相关推荐
发帖
Qt
加入

1.4w+

社区成员

Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
申请成为版主
帖子事件
创建了帖子
2017-11-15 09:55
社区公告
暂无公告