如何根据标题长度调整QDialog的大小?
How can I adjust the size of a QDialog according to its title length?
我的对话框窗口的一个标题被缩短了(如"My Dialogt..."(。如果对话框稍宽,整个标题将完全显示,看起来会更好。
Qt中似乎没有设置来做到这一点。我在这里发现了一个QMessageBox
的技巧:QMessageBox::about 可以将大小调整为标题长度吗?,但它不是通用的。例如,它还必须考虑窗口标题左侧和右侧图标的大小,以计算出一个非常好的最小大小,其中标题仍然完整显示。
有没有通用的方法来实现这一点?有没有一种简单的方法可以做到这一点?还是过度设计?
这个目标不仅值得怀疑(参见vahanco评论(,而且很难实现,因为窗口标题栏根本不是Qt领域:除了能够设置其文本并设法使用窗口标志显示或隐藏关闭/最小/最大按钮外,几乎没有其他控制。
顺便说一下,设置对话框最小宽度的一种非常原始的方法可以(可以(为整个文本腾出空间如下:
const QString text = "Very very very very very very very very very very very very very long window title";
setWindowTitle(text);
QFontMetrics metrics(font(), this);
setMinimumWidth( metrics.horizontalAdvance(text));
这开箱即用,而且文本很可能会保持剪切,因为使用的字体应该与标题栏中使用的字体相同(通常不是(,我们没有考虑框架宽度,图标宽度,标题栏按钮宽度以及窗口管理器拥有的其他所有内容,Qt完全不知道。
因此,您可以计算出所有这些东西需要多少额外空间,并使用完全任意的额外填充来调整宽度,例如
setMinimumWidth( metrics.horizontalAdvance(text) + 256);
也许一开始就得到你想要的(如果你仍然真的想要它(。
接受的答案对我不起作用。
以下代码适用于 QT 5.15。根据调用 setMinumumWidth(( 后的文档,您必须调用 updateGeometry(( 更新几何文档。设置 minimumWidth 应该会更新 sizeHint。这对我来说没有发生。此外,QFontMetrics::horizontalAdvance没有返回文本的宽度。 我不得不使用 QFontMetrics::boundingRect({title_string}(.width((。 在对话框中调用调整大小是最终让它为我工作的原因。如果接受的答案对您不起作用,请尝试一下。
QString message = "Message for the user";
QInputDialog dialog = QInputDialog(this);
dialog.setLabelText(message);
QString longTitle = QString("Super long test title for making sure the widget will show all of the stupid long title.");
dialog.setWindowTitle(longTitle);
dialog.setInputMode(QInputDialog::TextInput);
auto fontMetrics = dialog.fontMetrics();
auto width = fontMetrics.boundingRect(longTitle).width();
dialog.resize(width + 200, dialog.rect().height());
const int ret = dialog.exec();
- 为char数组调整zlib-zpipe
- 调整大小后指向元素值的指针unordered_map有效?
- 在C++中调整向量中的索引
- 哪些库可以通过Opencv调整曝光率
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- 在容量内调整矢量大小时的性能影响
- 将 boost::odeint 与向量类一起使用,而无需调整向量的大小
- 将摄像机调整到俯视图
- Qt 图表条形图调整大小崩溃
- 除非重新绘制大小,否则SDL_Texture在调整大小后呈现黑色
- 调整布局上的 QGraphicsView 小部件的大小
- 如何在构建链接列表时调整头、尾指针
- 如何将旧的 C 样式 #define 映射与现代C++进行调整?
- 当您在此单词中搜索单词时调整字符数组的大小?
- 自定义对话框(源自QDialog)不会关闭(Android)
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何根据标题长度调整QDialog的大小?
- 如何在使用调整大小对话框的动画后固定QDialog的大小
- 如何根据内容调整QDialog的窗口大小