Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: AndreyK от Июль 25, 2011, 18:39



Название: Контекстное меню в трее программы
Отправлено: AndreyK от Июль 25, 2011, 18:39
Всем привет.У меня возникла проблема размещения контекстного меню в трее программы. Когда кликаешь правой кнопкой мыши по иконке в трее, то контекстное меню распологается не совсем так как надо.
См. рисунок ниже .

(http://s2.ipicture.ru/uploads/20110725/Yf854kvf.png)

Подскажите пожалуйста как разместить его вот так. См. рисунок ниже.

(http://s2.ipicture.ru/uploads/20110725/dTn94ykR.png)

Код:

mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QSystemTrayIcon.h"
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QSystemTrayIcon * Tray = new QSystemTrayIcon(this);
    Tray->setIcon(QIcon(":/Images/Aperture.ico"));
    Tray->show();
    QMenu *Menu = new QMenu(this);
    Menu->addAction(QString::fromLocal8Bit("ффовыарфовралодфврфаафвыафывафва"));
    Menu->addAction(QString::fromLocal8Bit("фыовраофврыаорфралофр2345г2435"));
    Menu->addAction(QString::fromLocal8Bit("243523452435"));
    Menu->addAction(QString::fromLocal8Bit("79еврпар"));
    Menu->addAction(QString::fromLocal8Bit("ффовыар3456363афва"));
    Tray->setContextMenu(Menu);
}
MainWindow::~MainWindow()
{
    delete ui;
}



Название: Re: Контекстное меню в трее программы
Отправлено: LisandreL от Июль 25, 2011, 19:56
Наследуйтесь от QMenu, перегружайте setVisible (оно виртуальное) и вычисляйте и устанавливайте в нём нужную координату x, а затем вызывайте родительский setVisible.


Название: Re: Контекстное меню в трее программы
Отправлено: sendevent от Июль 25, 2011, 20:23
Я, наверно, поведу себя в стиле "русских форумов, когда вместо ответа начинают рассказывать ...", но все же:
Насколько я помню, во-первых, один из менюшных execute параметром принимает координаты - можно использовать его, во-вторых, попап действительно можно подвинуть вручную куда хочется.
Но! Не вижу ничего криминального в поведении по-умолчанию, а если учесть необходимость самостоятельного расчета геометрии для разных положений таскбара (плюс, возможно, для разных выпендриваний с декорациями под разными wm'ми) - на перфекционизм стоит забить. Не то что бы трудно/много ручной работы - просто правило Парето (20/80) как раз про такое.


Название: Re: Контекстное меню в трее программы
Отправлено: Пантер от Июль 25, 2011, 20:27
У меня в KDE меню всегда себя так ведет. Не вижу ничего криминального.


Название: Re: Контекстное меню в трее программы
Отправлено: zenden от Июль 25, 2011, 21:22
В Windows 7 точно такое же поведение. Не ищите проблему там, где ее нет.


Название: Re: Контекстное меню в трее программы
Отправлено: AndreyK от Июль 25, 2011, 21:42
Всё понятно, спасибо всем что направили на путь истинный.