gpt4 book ai didi

c++ - 在 QScrollBar 可见性发生变化时获取 QScrollBar 宽度

转载 作者:行者123 更新时间:2023-11-28 05:59:39 26 4
gpt4 key购买 nike

我正在尝试获取 qscrollbar 的宽度,因为它改变了可见性。我这样做是因为我想通过 q​​scrollbar 的宽度更改我的 qtablewidget 的宽度(如果它可见)。

我正在使用来 self 的 qscrollbar 的 rangeChanged(int min, int max) 信号。如果 max > min 那么 qscrollbar 是可见的。我的问题是,当我使用 m_tableWidget->verticalScrollBar()->width() 获取 qscrollbar 宽度时,该值不是当前宽度,而是触发 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);
}

有谁知道我如何在它变得可见/不可见时获得新的 qscrollbar 宽度?

最佳答案

Qt 有更好的方法来处理某些小部件容器区域的这种异步调整大小。您可能应该删除所有明确处理它的代码,而是添加:

// m_tableWidget constructed
// at least first parameter for horizontal sizing should be Expanding.
m_tableWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

对于该表格小部件类,重载 resizeEvent 虚拟方法是有意义的,该方法将在每次调整大小时触发,并从那里调整单元格或 resizeColumnsToContents()

关于c++ - 在 QScrollBar 可见性发生变化时获取 QScrollBar 宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33527608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com