当应用程序启动但仍在构建时(当所有初始小部件正在创建时等等),我将一个 QSplitter
添加到我的布局中,其中有两个小部件,我想要第二个小部件或多或少占据了可用空间的 60/70%,而第一个小部件占据了剩余空间(考虑到拆分器大小本身)。
所以,一开始,在显示窗口本身之前,我尝试或多或少地重新调整这两个小部件:
splitter->setOrientation(Qt::Vertical);
auto sizes = splitter->sizes();
int& first_w = sizes.front(); // == 0
int& second_w = sizes.last(); // == 0
int diff = form_w * 2.3 - tbl_w; (30% * 2.3 = ~70%)
second_w += diff;
first_w -= diff;
splitter->setSizes(sizes);
但是,first_w
和 second_w
包含 0
和 0
,我不知道是不是因为大小尚未计算,或者因为小部件尚未显示(窗口未显示)并且不可见小部件的大小为 0
。
我该怎么做才能获得这些小部件的“ future ”尺寸? splitter
位于 QVBoxLayout
内,所有者小部件的可用空间或多或少是窗口的所有垂直空间(只有一个 QTabBar
位于拥有该 QVBoxLayout
的小部件之上,并且窗口中有一些填充)。
最佳答案
根据docs以下应该做正确的事......
splitter->setSizes(QList<int>() << 30 << 70);
如果 QSplitter
是垂直的,则应将 30% 分配给顶部小部件,将 70% 分配给下部小部件。
关于c++ - Qt:QSplitter,重做大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41127882/