Qt:调整 QMenuBar 角小部件的大小

Rob*_*ner 0 qt resize widget

我在主窗口菜单栏的右上角放了一个按钮:

QPushButton *pb = new QPushButton("Text");
pb->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);

QMainWindow *mainWindow;
mainWindow->menuBar()->setCornerWidget(pb, Qt::TopRightCorner);
Run Code Online (Sandbox Code Playgroud)

初始布局很好。稍后,一个异步事件将 QPushButton 的文本更改为更长的字符串,但它在右侧被剪掉了。

我可以看到当字符串更新时 QPushButton 的大小会发生变化。如果调整窗口大小,QPushButton 将正确显示。问题似乎是让 QMenuBar 识别出小部件的大小已更改。

这个答案如何在更改按钮文本时自动更改 QPushButton 宽度和 QMenuBar 角小部件宽度?建议重置角落小部件。我宁愿避免这种情况,因为我的应用程序的结构让我在初始化后跳过几个丑陋和笨拙的箍来重置角落小部件。

Ale*_*kov 5

解决方法很简单。更新按钮调用的文本后, menuBar()->adjustSize();我在 Qt5.5 中对其进行了测试,希望它对您有用。