Автор Гілка: Qt4 ws desktop  (Прочитано 3257 раз)

Відсутній Markus

  • Дописувач
  • **
  • дописів: 79
  • Карма: +0/-0
  • Програматор
Qt4 ws desktop
« : 2007-02-06 23:00:46 »
 Доброго дня.
Підкажіть як за допомогою Qt4 написати якусь стрічку на стільниці у будь-якому менеджері вікон? В Qt3 був приклад desktop, але він не промальовував нічого у КДЕ
Чи потрібні Україні програмісти, які не знають англійської мови?

Відсутній Markus

  • Дописувач
  • **
  • дописів: 79
  • Карма: +0/-0
  • Програматор
Re: Qt4 ws desktop
« Відповідей #1 : 2007-02-07 23:33:20 »
Якщо на Qt це не можливо то підкажіть будь-ласка що я не так написав в xlib:
#include <X11/Xlib.h>
#include <glib.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>      
#include <cstring>
                  
using namespace std;
            
Display* dsp = 0;
Window window = 0;
            
int main( int, char** argv)
{
      char *display_name = getenv("DISPLAY");
      
      dsp = XOpenDisplay(display_name);
      if (dsp == NULL) {
        fprintf(stderr, "%s: can't connect to Х server '%s'\n",
        argv[0], display_name);
        exit(1);
        }
      
      window = XDefaultRootWindow( dsp );
      int scr_number = DefaultScreen(dsp);
      
            
      GC gc = XDefaultGC(dsp,scr_number);
      
      XSetForeground( dsp, gc, 0xffffff);
      XSetBackground( dsp, gc, 0 );
      
      int display_width = DisplayWidth(dsp, scr_number);
      int display_height = DisplayHeight(dsp, scr_number);
      
      Font font = XLoadFont( dsp, "-*-fixed-medium-*-normal-100-*-*-*-*-*-koi8-u " );
      XSetFont( dsp, gc, font );
      
      const char* msg = "Hello there!!!!";

      
          XDrawString( dsp, window, gc, 130, 130, msg, strlen( msg ) );
          XFlush(dsp);
              XUnloadFont( dsp, font );
      XFreeGC( dsp, gc );

sleep(2000);
      
}
буду дуже вдячний за допомогу.
Чи потрібні Україні програмісти, які не знають англійської мови?

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: Qt4 ws desktop
« Відповідей #2 : 2007-02-08 13:56:15 »
Якщо на Qt це не можливо то підкажіть будь-ласка що я не так написав в xlib:
...
буду дуже вдячний за допомогу.
Та ніби все правильно:
#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

Display *display = 0;
Window window = 0;

int
main (int argc, char **argv)
{
  char *display_name = getenv ("DISPLAY");

  display = XOpenDisplay (display_name);
  if (display == NULL)
    {
      fprintf (stderr, "%s: can't connect to Х server '%s'\n",
               argv[0], display_name);
      exit (1);
    }

  window = XDefaultRootWindow (display);
  int scr_number = DefaultScreen (display);


  GC gc = XDefaultGC (display, scr_number);

  XSetForeground (display, gc, 0xff00ff);
  XSetBackground (display, gc, 0);

  int display_width = DisplayWidth (display, scr_number);
  int display_height = DisplayHeight (display, scr_number);

  Font font =
    XLoadFont (display, "-*-fixed-medium-*-normal-100-*-*-*-*-*-koi8-u ");
  XSetFont (display, gc, font);

  const char *msg = "Hello there!!!!";


  XDrawString (display, window, gc, 130, 130, msg, strlen (msg));
  XFlush (display);

  XUnloadFont (display, font);
  XFreeGC (display, gc);

  return 0;
}

gcc -lX11 hw.c -o hw && ./hw - у мене малює, але будь-яке оновлення картинки (напр. вікно зверху провів) стирає напис.

У мене стільниця не перекривається ніякими менеджерами (такими як nautilus чи KDE) - у мене взагалі іконок на стільниці нема, тому ніщо не заважає мені малювати по стільниці.
[Fedora Linux]

Відсутній Markus

  • Дописувач
  • **
  • дописів: 79
  • Карма: +0/-0
  • Програматор
Re: Qt4 ws desktop
« Відповідей #3 : 2007-02-08 18:03:09 »
Цитата
У мене стільниця не перекривається ніякими менеджерами (такими як nautilus чи KDE) - у мене взагалі іконок на стільниці нема, тому ніщо не заважає мені малювати по стільниці.
Отут Ви і знайшли мою помилку, дякую. Я геть про це забув бо у мене перекриває  KDE. Може підкажете як малювати поверх будь-якого менеджера. Пробував варіант: виводити вікно із label і  робити вікно прозорим, але є мінус вікно відображається у панелі задач. А для мене це не бажано ( Передімною постало завдання написання програми біжучої стрічки, тобто щоб в низу стільниці бігла стрічка із якоюсь інформацією повер усіх вікон, як у теленовинах).
Чи потрібні Україні програмісти, які не знають англійської мови?

Відсутній Markus

  • Дописувач
  • **
  • дописів: 79
  • Карма: +0/-0
  • Програматор
Re: Qt4 ws desktop
« Відповідей #4 : 2007-02-08 22:50:55 »
Знайшов вирішення проблеми. Якщо комусь цікаво то скажу завантажте сирці програми xpenguins посилання не дам бо не пам'ятаю, а завантажив я їх із репозиторіїв opensuse.org правда треба підправити код для відображення в KDE , але поки що не знаю як, коли розберусь що підправити розповім, якщо комусь цікаво.
Чи потрібні Україні програмісти, які не знають англійської мови?

Відсутній DalekiyObriy

  • Літератор
  • ******
  • дописів: 1929
  • Карма: +5/-0
Re: Qt4 ws desktop
« Відповідей #5 : 2007-02-09 07:35:52 »
ось тут є програмка, яка пише на стільницю, навіть приймає всілякі параметри для шрифтів та геометрії  http://www.goof.com/pcg/marc/root-tail.html

для KDE можна подивитись KDE World Clock та KDE Web Desktop - дві програми, які пишуть в кореневе вікно X11 з-під KDE...
Fedora 35 (x86-64)

Відсутній Markus

  • Дописувач
  • **
  • дописів: 79
  • Карма: +0/-0
  • Програматор
Re: Qt4 ws desktop
« Відповідей #6 : 2007-02-09 14:30:53 »
Дякую за посилання зараз спробую використати.
Чи потрібні Україні програмісти, які не знають англійської мови?