所以我试图在qt中设置这个窗口/主窗口/应用程序总是在底部(就像总是底部窗口一样)(所以rainmeter以某种方式用他们的小部件做到这一点),但我什至不能让mac osx做这样的事情. 我已经尝试了整个
this->setWindowFlags(Qt::WindowStaysOnBottomHint);
但没有任何运气。有什么提示吗?示例代码很棒。
有坏消息和好消息。坏消息是它根本没有实施。
好消息是:由于 Qt 是开源的,你可以打开它看看就知道了。如果有错误,您可以提交修复。QWidget::setWindowFlags
这是交易,在
qwidget.cpp:9144的通用代码中你有这个:
void QWidget::setWindowFlags(Qt::WindowFlags flags)
{
if (data->window_flags == flags)
return;
Q_D(QWidget);
if ((data->window_flags | flags) & Qt::Window) {
// the old type was a window and/or the new type is a window
QPoint oldPos = pos();
bool visible = isVisible();
setParent(parentWidget(), flags);
// if both types are windows or neither of them are, we restore
// the old position
if (!((data->window_flags ^ flags) & Qt::Window)
&& (visible || testAttribute(Qt::WA_Moved))) {
move(oldPos);
}
// for backward-compatibility we change Qt::WA_QuitOnClose attribute value only when the window was recreated.
d->adjustQuitOnCloseAttribute();
} else {
data->window_flags = flags;
}
}
所以本质上它只是设置window_flags
。QWidget 的 mac 行为在qwidget_mac.mm中。
您将Qt::WindowStaysOnBottomHint
在该文件中找不到任何引用。(虽然你会发现......)Qt::WindowStaysOnTopHint
我将停止说“除非你修补 Qt,否则不可能低于 Qt”。
修补qwidget_mac.mm
留给读者作为练习。:-)