だから私はqtでこのウィンドウ/メインウィンドウ/アプリケーションを常に一番下にあるように設定しようとしています(常に一番下のウィンドウのように)(したがって、レインメーターはウィジェットでこれを何らかの形で行います)が、Mac osxにそのようなことをさせることさえできません. 全部試しました
this->setWindowFlags(Qt::WindowStaysOnBottomHint);
しかし運がない。ヒントはありますか?サンプルコードは素晴らしいです。
悪いニュースと良いニュースがあります。悪いニュースは、単に実装されていないことです。
幸いなことに、Qt はオープン ソースであるため、クラックして開いて確認することができます。バグがある場合は、修正を送信できます。qwidget.cpp:9144の一般的なコードではQWidget::setWindowFlags
、
次のようになります。
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
は、読者への演習として残されています。:-)