Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: troorl от Август 03, 2006, 20:51



Название: QT3.3, Сворачивание приложения в ТРЭЙ (в разных WM/DE)
Отправлено: troorl от Август 03, 2006, 20:51
Задача проста до безобразия, а нормального решения я пока не вижу.
Пишу утилиту на PyQT, нужно, чтобы юзер имел возможность свернуть окно программы в трэй и управлять приложением оттуда.
Уже видел класс для КДЕ, видел реализацию, вытянутую с SIM, ещё много чего видел... Но класс для КДЕ использовать не кошерно, так как он потянет весь kdelibs, остальное не подходит, ибо код С++, а утилита на Python.

Вопрос: ну хоть кто-то знает оптимальное решение? И есть ли оно вообще?
Спасибо за внимание.


Название: QT3.3, Сворачивание приложения в ТРЭЙ (в разных WM/DE)
Отправлено: Sergeich от Август 03, 2006, 23:54
Мля... новостями интересуемся? http://doc.trolltech.com/4.2/qsystemtrayicon.html


Название: QT3.3, Сворачивание приложения в ТРЭЙ (в разных WM/DE)
Отправлено: troorl от Август 04, 2006, 18:39
Цитата: "Sergeich"
Мля... новостями интересуемся? http://doc.trolltech.com/4.2/qsystemtrayicon.html
А может заголовок почитаем? QT3.3 вам ничего не говорит?


Название: QT3.3, Сворачивание приложения в ТРЭЙ (в разных WM/DE)
Отправлено: Sergeich от Август 05, 2006, 15:24
а че долго код под трешку адаптировать? или лениво?


Название: QT3.3, Сворачивание приложения в ТРЭЙ (в разных WM/DE)
Отправлено: troorl от Август 05, 2006, 15:52
Цитата: "Sergeich"
а че долго код под трешку адаптировать? или лениво?

Интересно, как бы мне его адаптировать, если код на С++, а я пишу на Python....


Название: QT3.3, Сворачивание приложения в ТРЭЙ (в разных WM/DE)
Отправлено: troorl от Август 11, 2006, 03:30
Переписал на С++. Взял этот класс. Хочу теперь, чтобы при клике по значке в трее главное окно пряталось, а при повторном - появлялось. Делаю приблизительно следующее:

Код:

.......
    tray_icon = new TrayIcon();
    tray_icon->setIcon(QPixmap::fromMimeSource("img/tray_active.png"));
    tray_icon->show();

    connect(tray_icon, SIGNAL(clicked(const QPoint&)), this, SLOT(S_hide()));

void uaixWall::S_hide()
{
    if(this->is_hide)
    {
        this->show();
    }
    else
    {
        this->hide();
    }
}

В переменной is_hide хранится текущий статус свёрнуто/нет. Так вот, при клике по значке ничего не происходит. Вот так тупо. Вешал эту же функцию на другое событие - прячется. Что я делаю не так?