Название: Как реализовать контекстное меню для виджетов? Отправлено: smirnoff от Январь 28, 2011, 17:21 Добрый день.
Помогите разобраться. Хочу понять как создать контекстное меню для любого из виджетов. Например для QLineEdit. Имеем: Код: int main(int argc, char *argv[]) Вопрос: как создать свое контекстное меню для ln? Для самого виджета Widget создать меню не проблема (подглядел в examples): Код: void Widget::contextMenuEvent(QContextMenuEvent *event) А как для других виджетов? Спасибо за советы, комментарии, ссылки... Название: Re: Как реализовать контекстное меню для виджетов? Отправлено: GreatSnake от Январь 28, 2011, 17:28 QMenu * QLineEdit::createStandardContextMenu ()
Название: Re: Как реализовать контекстное меню для виджетов? Отправлено: juvf от Январь 28, 2011, 17:52 Цитировать как создать контекстное меню для любого из виджетов. Переопределить mousePressEventКод: #include <QtGui/QApplication> Название: Re: Как реализовать контекстное меню для виджетов? Отправлено: smirnoff от Январь 28, 2011, 18:05 QMenu * QLineEdit::createStandardContextMenu () Вот это не понял как применить. Хотелось бы пример. Цитировать как создать контекстное меню для любого из виджетов. Переопределить mousePressEventКод: #include <QtGui/QApplication> Это работает. Спасибо. Как я понял мы описываем свой класс, который является наследником QLineEdit, в котором определяем функцию, реагирующую на события мыши, где выделяем нажатие на правую кнопку (Qt::RightButton). Огромное спасибо. Название: Re: Как реализовать контекстное меню для виджетов? Отправлено: Fat-Zer от Январь 28, 2011, 18:24 Цитировать как создать контекстное меню для любого из виджетов. Переопределить mousePressEventИз пушки по воробьям... всё намного проще: Код
Название: Re: Как реализовать контекстное меню для виджетов? Отправлено: smirnoff от Январь 28, 2011, 18:40 Цитировать как создать контекстное меню для любого из виджетов. Переопределить mousePressEventИз пушки по воробьям... всё намного проще: Код
Отлично. Минимализм сейчас в моде. :-) А как привязать пункт меню "qwe" и другие к слоту? Есть пример? Название: Re: Как реализовать контекстное меню для виджетов? Отправлено: Etud от Январь 28, 2011, 19:16 Цитировать Отлично. Минимализм сейчас в моде. Может ты хотел сказать оптимализм ?!!Цитировать А как привязать пункт меню "qwe" и другие к слоту? Есть пример? Еще проще. Создай объект action, сделай connect() и пользуйся слотами. Название: Re: Как реализовать контекстное меню для виджетов? Отправлено: smirnoff от Январь 28, 2011, 19:41 Сделал так, все заработало:
Код: #include <QtGui> Все ли верно? Или есть у кого-нибудь замечания по поводу моего кода? Название: Re: Как реализовать контекстное меню для виджетов? Отправлено: lit-uriy от Январь 28, 2011, 21:57 >> Для самого виджета Widget создать меню не проблема
>> ... >> А как для других виджетов? аналогично, ведь они тоже виджеты >>Все ли верно? скомпилль, запусти, узнаешь Название: Re: Как реализовать контекстное меню для виджетов? Отправлено: juvf от Январь 29, 2011, 11:08 Из пушки по воробьям... не знал про такой метод.... А как "простым" методом сепаратор вставить?всё намного проще: Цитировать Цитировать QMenu * QLineEdit::createStandardContextMenu () Вот это не понял как применить. Хотелось бы пример.У QLineEdit есть стандартное контекстное меню (Copy, Paste, Cut, ....). Если нужно дополнить это сандартное меню своими пунктами, то в "пушке", в mousePressEvent содаем стандартное меню и добавляем свои пункты Код: ... Название: Re: Как реализовать контекстное меню для виджетов? Отправлено: Fat-Zer от Январь 29, 2011, 13:57 Из пушки по воробьям... не знал про такой метод.... А как "простым" методом сепаратор вставить?всё намного проще: Код конечно приятно было бы в одну строчку записать... но я не нашёл как... есть ещё два способа показывать меню... здесь всё расписывать не буду, посмотрите справку про Qt::ContextMenuPolicy и всё сразу станет ясно ;) ЗЫ: А если наследовать, то лучше перехватывать contextMenuEvent. Название: Re: Как реализовать контекстное меню для виджетов? Отправлено: Krow от Март 27, 2011, 07:26 а теперь вопрос. а что если конткстное меню динамическое.
допустим: О программе: сепаратор список действий(открываем раскрывающийся список)-> послать на ярмарку, позвать с ярмарки и т.д. сепаратор выход список сдействий берется из бд. (он может быть динамическим, потому как список "куда послать может меняться") как в таком случае QAction'ы завязать? Название: Re: Как реализовать контекстное меню для виджетов? Отправлено: fuCtor от Март 27, 2011, 20:11 Код
Можно еще проще: Код
А динамическое меню можно реализовать путем перехвата сигнала нажатия на меню, запроса из базы нужных элементов. Построения нового меню и добавления его к нажатому итему с последующим разворачиванием программно. Связывания так же при создании выполняются. При скрытии меню, элементы можно уничтожить. |