c++ - Qt:QSplitter,重做大小

标签 c++ qt qsplitter

当应用程序启动但仍在构建时(当所有初始小部件正在创建时等等),我将一个 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_wsecond_w 包含 00,我不知道是不是因为大小尚未计算,或者因为小部件尚未显示(窗口未显示)并且不可见小部件的大小为 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/

相关文章:

qt - 如何从 JavaScript 修改 QML 动态对象

python - 如何在 QSplitter 中设置 QTreeView 的初始大小?

c++ - #define如何知道何时停止寻找?

c++ - 为什么必须在基类中定义非纯虚方法?

qt - 将整个数组写入 QFile

qt - 在 Windows 上的 QML 中播放 RTSP 视频

python - 通过从 PyQt4 中使用 QSplitter() 设置的按钮调用来删除小部件

qt - 如何从 QSplitter 中删除 QWidgets

c++ - 如何从单独的线程使用 ODBC 访问 DB2 数据库?

javascript - 在 v8 JavaScript 中重复调用 C++ 是否会产生大量开销?