Qt :: WA_TranslucentBackground барлық жерде қол жетімді?

Менде әуе шарының кеңестерін көрсететін виджет бар. Дұрыс көрсетілу үшін виджет QWidget төлсипатына Qt :: WA_TranslucentBackground байланысты. Менің қосымшам барлық негізгі платформаларда (Windows XP, Windows 7, Linux, Mac) жұмыс істеуі тиіс, сондықтан мен біраз алаңдаушылық: бұл атрибут барлық негізгі платформаларда қол жетімді бе? Егер жоқ болса, онда ол сұрамайды ма? testAttribute() мұны жасамайды. Ол атрибут орнатылса, оның әсер етуі туралы емес, тек қана қайтарады.

6

2 жауаптар

Бұл тек ARMB-ге қолдау көрсетпеу үшін конфигурацияланған кезде X11-дегі Linux-ды қоспағанда ғана жұмыс істеуге тиіс. QWidget құжатын қараңыз:

Мөлдір Windows жасау

     

Qt 4,5 болғандықтан, мөлдір терезелерді жасауға болады   композитингті қолдайтын терезе жүйелерінде өңделеді.

     

Бұл мүмкіндікті жоғары деңгейлі виджетте қосу үшін оны орнатыңыз   Qt :: WA_TranslucentBackground төлсипаты setAttribute() және қамтамасыз етіңіз   бұл өңірлер өңірлердегі мөлдір емес түстермен боялған   сіз ішінара мөлдір болғыңыз келеді.

     

Платформа ескертпелері:

     

X11: Бұл мүмкіндік ARGB визуалдарын және композитинг терезесін басқаратын X серверін пайдалануға негізделген.

     

Windows: Виджет жұмыс істеу үшін мөлдірлікке арналған Qt :: FramelessWindowHint терезесінің жалаушасы болуы керек.

Сондай-ақ, «Ашықтық және қос буферлеу» атты тармақты оқып шығыңыз, қызықты болуы мүмкін.

7
қосылды
Менің ойымша, бұл сізде қиындықтар туындады соңғы жабдықтармен/бөлу. Кез-келген жағдайда xdpyinfo-ні немесе xorg.conf конфигурация файлына қарап ақпаратты алуға болады. Мүмкін сіз ендірілген Linux жүйелерімен кейбір қиындықтар туындауы мүмкін. Бұл тағы бір нәрсе береді: stackoverflow. com/questions/2434511/hellip; .
қосылды автор Luca Carlon, көзі
Қазіргі заманғы Linux үшін ARGB-ге қолдау көрсетпеу қаншалықты жиі немесе сирек? Мен бұл туралы сұрай аламын ба?
қосылды автор Sebastian Negraszus, көзі

Linux үшін композитинг қосылғанын тексеру керек:

bool QX11Info::isCompositingManagerRunning() [static]

мысалы,

#ifdef Q_WS_X11
    if(QX11Info::isCompositingManagerRunning())
        setAttribute(Qt::WA_TranslucentBackground);
#endif

Бұл сұрақ ескі, бірақ бұл біреуге көмектесе алады.

7
қосылды
Кейде setMask жоқ linux-де жұмыс істеу үшін Qt :: WA_TranslucentBackground алу үшін, сіз сондай-ақ тағы бірнеше атрибутты және терезе жалауын қолдана аласыз. stackoverflow.com/a/30596357/999943
қосылды автор phyatt, көзі
Сондай-ақ, Google-дан кететін кез-келген адам үшін, егер сіз өзіңізге дөңгелектелген OSD немесе сөйлеу шарының қалқымалысы үшін құрастырылмаған үстелді қолдауға мұқтаж болсаңыз, Qt ShapedClock мысалы мысалсыз терезе жасау үшін setMask пайдалану жолын көрсетеді.
қосылды автор ssokolow, көзі