سؤال

لديّ 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()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top