Portál AbcLinuxu, 26. dubna 2024 01:12


Dotaz: Qt vlastnosti cudzieho okna

2.8.2010 13:34 Onogram
Qt vlastnosti cudzieho okna
Přečteno: 251×
Odpovědět | Admin
Dobry den, potreboval by som vo svojej aplikacii zistit vlastnosti okna cudzej aplikacie po kliknuti na jej okno. Aky postup by bolo najvhodnejsie zvolit?
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.8.2010 14:20 volvox | skóre: 16
Rozbalit Rozbalit vše Re: Qt vlastnosti cudzieho okna
Odpovědět | | Sbalit | Link | Blokovat | Admin
AFAIK to přímo přes Qt nepůjde a bude potřeba použít Xlib.

Podívejte se na zdroják utility xwininfo, která dělá přesně to, co požadujete.
3.8.2010 22:04 Onogram
Rozbalit Rozbalit vše Re: Qt vlastnosti cudzieho okna

Vytvoril som nieco taketo, ale zasekne sa to na while a netusim preco.

#include <X11/Xlib.h>
#include <assert.h>
#include <unistd.h>
#include <iostream>

#define NIL (0)

int selectWindow() {

Display *dpy = XOpenDisplay(NIL);

if (!dpy) { return 1; }

XEvent e;

do
{
XNextEvent( dpy, &e);
}
while (e.type != ButtonPress);

XWindowAttributes selWin;
XGetWindowAttributes(dpy, e.xbutton.window, &selWin);

std::cout << selWin.width << std::endl;
std::cout << selWin.height << std::endl;

return 0;
}

4.8.2010 10:47 Luboš Luňák | skóre: 19 | blog: Seli
Rozbalit Rozbalit vše Re: Qt vlastnosti cudzieho okna
XSelectInput()
4.8.2010 12:31 Onogram
Rozbalit Rozbalit vše Re: Qt vlastnosti cudzieho okna
Problem je, ze xlib dovoluje zasielat eventy iba jednemu klientovi, co je v tomto pripade okno, na ktore klikam a nie moja aplikacia.
4.8.2010 14:17 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: Qt vlastnosti cudzieho okna
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ja bych to delal asi jako program xwininfo (soucast balicku xorg-x11-utils, zdrojaky napr. zde). Tenhle program dela presne to, ze po kliknuti na libovolne okno vypise o nem informace. Klicove jsou funkce XGrabPointer a XWindowEvent.
19.8.2010 13:59 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Qt vlastnosti cudzieho okna
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jen dodám, že v Qt se může hodit QX11Info::display() místo XOpenDisplay(), protože Qt pochopitelně už otevřené spojení s X má. A pokud bys chtěl číst nějaké eventy od X, je imho lepší podědit QApplication a reimplementovat x11EventFilter()...
What Big Oil knew about climate change
19.8.2010 14:56 JohanGM
Rozbalit Rozbalit vše Re: Qt vlastnosti cudzieho okna
Vyriesil som to pomocou xwininfo ale pozriem sa aj na dalsie moznsosti. Dakujem vsetkym za pomoc.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.