调整QTableWidget中列的大小
Resizing columns in a QTableWidget
本文关键字:QTableWidget 调整 更新时间:2023-10-16
我正在开发一个c++ Qt应用程序,使用QTableWidget
来显示数据。
据我所知,QTableWidget
为列提供了自动调整大小模式:调整最后一个的大小。
这种方法不适合我的任务,所以我编写了从QTableWidget
继承的新类,具有resizeEvent
函数:
MyTableWidget::MyTableWidget ( std::vector<int> columnsRelWidth )
{
//columnsRelWidth contains relative width of each column in the table
this->columnWidth = columnsRelWidth;
}
void MyTableWidget::resizeEvent ( QResizeEvent *event )
{
QSize newSize = event->size();
int totalPoints = 0; //total points of relative width
for ( int x = 0; x < this->columnWidth.size(); ++x )
{
totalPoints += this->columnWidth[x];
}
int width = newSize.width();
double point = width / totalPoints; //one point of relative width in px
for ( int x = 0; x < this->columnCount(); ++x )
{
this->setColumnWidth ( x, ( this->columnWidth[x] * point ) );
}
}
我添加了4列,并设置了以下相对宽度值(它们的总和是1000):
| First column | Second column | Third column | Fourth column |
| 100 | 140 | 380 | 380 |
然而,我不能在表中看到任何列,直到表的宽度小于1000。使用调试模式,我看到如果width < totalPoints
为真,变量point
等于0。例如,如果width
= 762, point
应该是0.762,但它是0。
看起来程序会自动舍入double
值。为什么?我做错了什么?
也许有更好的方法来完成我的任务(使用百分比列宽度在QTableWidget
)?
width
和totalPoints
都是整数。所以你在这里得到一个整数除法,当width < totalPoints
.
将其中一个强制转换为double
:
double point = width / (double) totalPoints;
相关文章:
- 为char数组调整zlib-zpipe
- 调整大小后指向元素值的指针unordered_map有效?
- 在C++中调整向量中的索引
- 哪些库可以通过Opencv调整曝光率
- 当用户在qtablewidget中输入单元格时,如何获得信号?C++
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- 在容量内调整矢量大小时的性能影响
- 将 boost::odeint 与向量类一起使用,而无需调整向量的大小
- 将摄像机调整到俯视图
- Qt 图表条形图调整大小崩溃
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- C++,Qt:仅在双击后编辑qtablewidget项目
- 调整布局上的 QGraphicsView 小部件的大小
- 如何在构建链接列表时调整头、尾指针
- 如何将旧的 C 样式 #define 映射与现代C++进行调整?
- 当您在此单词中搜索单词时调整字符数组的大小?
- Qt4 QTableWidget使列根据内容调整大小、交互式并与表边界对齐
- 调整QTableWidget列和行的大小以填充表
- 调整QTableWidget中列的大小