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)
...全文
286 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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之外的啊?
  • 打赏
  • 举报
回复
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.

16,173

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧