QT إخفاء عنصر شريط المهام
سؤال
لديّ QWidget مخصص وأنا بسيط لا أريد أن يظهر في شريط المهام. لديّ QSystemTrayicon لإدارة الخروج/التقليل إلى الخ.
المحلول
أعتقد أن الشيء الوحيد الذي تحتاجه هنا هو نوع من عنصر الوالد النائب. إذا قمت بإنشاء عنصر واجهة المستخدم بدون أحد الوالدين ، فسيعتبر نافذة المستوى الأعلى. ولكن إذا قمت بإنشائها كطفل من نافذة المستوى الأعلى ، فسيتم اعتبار نافذة الطفل und لا تحصل على إدخال شريط المهام في حد ذاته. نافذة الأصل ، من ناحية أخرى ، لا تحصل أيضًا على إدخال شريط مهام لأنك لم تضعه أبدًا: هذا الرمز هنا يعمل بالنسبة لي:
class MyWindowWidget : public QWidget
{
public:
MyWindowWidget(QWidget *parent)
: QWidget(parent, Qt::Dialog)
{
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow window;
MyWindowWidget widget(&window);
widget.show();
return app.exec();
}
لا يتم إدخال شريط المهام على الإطلاق ، إذا كان هذا هو المطلوب.
نصائح أخرى
إذا كنت ترغب في إظهار/إخفاء القطعة دون إظهارها على شريط المهام ، فقد تحقق من نوافذ هذه القطعة. لست متأكدًا بنسبة 100 ٪ ، لكنني أعتقد أنني استخدمت Qt::Dialog
| Qt::Tool
و Qt::CustomizeWindowHint
لتحقيق ذلك ، لكن نافذتي لم تكن مزينة بالكامل أيضًا. شيء آخر قد تضعه في الاعتبار إذا كنت تلعب مع ذلك هو سياسة الخروج من طلبك. عادةً ما يخرج الإغلاق/إخفاء آخر window من طلبك ، لذلك ربما تحتاج إلى الاتصال QApplication::setQuitOnLastWindowClosed(false)
لمنع ذلك ...
فقط قم بتعيين علامة Qt :: Subwindow for Widget.
رمز بيثون لتحقيق هذا:
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class MainWindow(QWidget):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent, Qt.Tool)
window = MainWindow()
window.show()