QMessageBoxes 在 OSX 中有非常奇怪的行为

Posted

技术标签:

【中文标题】QMessageBoxes 在 OSX 中有非常奇怪的行为【英文标题】:QMessageBoxes have very odd behavior in OSX 【发布时间】:2014-11-20 22:39:03 【问题描述】:

我在 OSX 上的 Qt 应用程序有非常奇怪的 QMessageBoxes。

与在 Windows 中的外观相比,OSX 上的所有消息框的字体都非常小。此外,标题不显示。图标也没有(在 Windows 中,显示应用程序图标)。按钮和默认按钮的顺序也不同,尽管它们在代码中的放置顺序与 windows 中的相同...

QMessageBox::critical(this, tr("Some Error"), tr("Cannot do what you want."));

if (QMessageBox::warning(this, tr("Some warning"),
    tr("I can't do what you ask, do %1 instead?").arg(alternative),
    QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes)

有很多这样的消息框...

奇怪的是,第二张图片中的字体非常小...但是我在程序外部单击,然后再返回,字体刷新到合适的大小...

是否可以添加样式表...以及放入什么? (我无法放置固定尺寸,因为我认为它们应该能够调整尺寸)

还要重写每个标准类型的消息框,创建一个对象,设置文本、图标、字体、大小,在一个非常大规模的程序中将是一项巨大的工作......标题呢......

我有什么选择?是否有可能在 osx 中以某种方式子类化消息框,以便我可以定义所需的行为? (我将如何处理非常小的字体?)

在 Windows 和 Linux 下,我没有看到这种奇怪的行为。使用 Qt 4.8、OSX 10.6-10.9

【问题讨论】:

【参考方案1】:

提问很好,发布后建议的类似问题信息丰富。

我从answer 发现了如何修复字体。奇怪的是......我使用的字体大小是应用程序之一:(我的回答here 用于相关问题)

我仍在尝试修复丢失的标题,尽管这个 answer 帮助我理解 OS X 中的正常行为是不显示标题...而这个 answer 帮助我弄清楚如果我该怎么做想重写几百个消息框来显示它们的标题。

至于默认按钮...我会将QMessageBox::Yes 替换为

QMessageBox::Yes | QMessageBox::Default

【讨论】:

以上是关于QMessageBoxes 在 OSX 中有非常奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

MAC OSX LION:mac 上的 gcc 未编译 wget

osx:在 NSWindowController 和 NSViewController 之间进行委托

每日一题找到出现奇数次的两个数

每日一题找到出现奇数次的两个数

fzyzojP3412 -- [校内训练20171212]奇数

实现服务高可用奇淫技巧