我试图得到一个滚动条的宽度,因为它改变了可见性。我这样做是因为如果qtablewidget是可见的,我希望将它的宽度更改为q滚动条的宽度。
我使用的是来自我的滚动条的rangeChanged(int min, int max)信号。如果是max > min,则qscrollbar条是可见的。我的问题是,当我使用m_tableWidget->verticalScrollBar()->width()获得q滚动条宽度时,值不是当前宽度,而是触发rangeChanged信号之前的前一个宽度。
这就是我的信号插槽连接的样子:
connect(m_tableWidget->verticalScrollBar(), SIGNAL(rangeChanged(int,int)),
this, SLOT(verticalScrollBarChanged(int,int)));这是插槽功能:
void ImageTableWidget::verticalScrollBarChanged(int min, int max)
{
int verticalScrollBarWidth = 0;
if (max-min)
verticalScrollBarWidth = m_tableWidget->verticalScrollBar()->width();
int horizontalHeaderWidth = m_tableWidget->horizontalHeader()->length();
m_tableWidget->setFixedWidth(verticalScrollBarWidth + horizontalHeaderWidth);
}有人知道我如何在新的滚动条宽度变得可见/不可见的时候获得它吗?
发布于 2015-11-05 17:42:59
Qt有一种更好的方法来处理某些小部件容器区域的异步调整。您可能应该删除显式处理它的所有代码,然后添加以下内容:
// m_tableWidget constructed
// at least first parameter for horizontal sizing should be Expanding.
m_tableWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);对于该表小部件类,重载resizeEvent虚拟方法是有意义的,该方法将在每次调整大小时触发,并从那里或resizeColumnsToContents()调整单元格。
https://stackoverflow.com/questions/33527608
复制相似问题