Russian Qt Forum
Сентябрь 23, 2024, 14:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Контекстное меню в трее программы  (Прочитано 4385 раз)
AndreyK
Гость
« : Июль 25, 2011, 18:39 »

Всем привет.У меня возникла проблема размещения контекстного меню в трее программы. Когда кликаешь правой кнопкой мыши по иконке в трее, то контекстное меню распологается не совсем так как надо.
См. рисунок ниже .



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



Код:

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;
}

« Последнее редактирование: Июль 25, 2011, 18:58 от AndreyK » Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #1 : Июль 25, 2011, 19:56 »

Наследуйтесь от QMenu, перегружайте setVisible (оно виртуальное) и вычисляйте и устанавливайте в нём нужную координату x, а затем вызывайте родительский setVisible.
Записан
sendevent
Гость
« Ответ #2 : Июль 25, 2011, 20:23 »

Я, наверно, поведу себя в стиле "русских форумов, когда вместо ответа начинают рассказывать ...", но все же:
Насколько я помню, во-первых, один из менюшных execute параметром принимает координаты - можно использовать его, во-вторых, попап действительно можно подвинуть вручную куда хочется.
Но! Не вижу ничего криминального в поведении по-умолчанию, а если учесть необходимость самостоятельного расчета геометрии для разных положений таскбара (плюс, возможно, для разных выпендриваний с декорациями под разными wm'ми) - на перфекционизм стоит забить. Не то что бы трудно/много ручной работы - просто правило Парето (20/80) как раз про такое.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Июль 25, 2011, 20:27 »

У меня в KDE меню всегда себя так ведет. Не вижу ничего криминального.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
zenden
Гость
« Ответ #4 : Июль 25, 2011, 21:22 »

В Windows 7 точно такое же поведение. Не ищите проблему там, где ее нет.
Записан
AndreyK
Гость
« Ответ #5 : Июль 25, 2011, 21:42 »

Всё понятно, спасибо всем что направили на путь истинный.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.089 секунд. Запросов: 23.