crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QPushButton и QAction
Sokoloff
  опции профиля:
сообщение 2.7.2009, 19:09
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Что-то не найду, можно привязать QPushButton к QAction, чтоб доступность кнопки менялась в зависимости от enabled для QAction.
Пытался вьехать в QWidget::addAction, но что-то не пойму "All QWidgets have a list of QActions" это как? Как, скажем кнопка, может иметь несколько action? Или это вообще из другой оперы? Может кто просветит меня по этому вопросу?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 3.7.2009, 5:47
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Sokoloff @ 2.7.2009, 23:09) *
Или это вообще из другой оперы?
скорее так.

Действия (QAction), нужны для меню, панели меню и панели инструментов. Эта абстракция позволяет воедино связать текст (с акселератором) в меню, значёк (QIcon) и комбинацию горячих клавиш.

Объясни конечную цель, подскажим как сделать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 3.7.2009, 9:26
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(Litkevich Yuriy @ 3.7.2009, 6:47) *
Цитата(Sokoloff @ 2.7.2009, 23:09) *
Или это вообще из другой оперы?
скорее так.

Действия (QAction), нужны для меню, панели меню и панели инструментов. Эта абстракция позволяет воедино связать текст (с акселератором) в меню, значёк (QIcon) и комбинацию горячих клавиш.

Объясни конечную цель, подскажим как сделать.


Для чего нужны QAction я знаю. Меня интересовало как связать action и обычную кнопку(QPushButton). Сейчас я сделал так:
def setMenu(self):
   ...
   self._actConvert = QtGui.QAction(KIcon('arrow-right'), i18n('Convert'), self)
   self.connect(self._actConvert, QtCore.SIGNAL('changed()'), self.actConvertChanged)
   ...

def actConvertChanged(self):
    self.form.button.setText(self._actConvert.text())
    self.form.button.setIcon(self._actConvert.icon())
    self.form.button.setEnabled(self._actConvert.isEnabled())


Все работает, но может есть более простое/прямое решение.

Отдельный вопрос вызвала фунция actions у QWidget, что это, для чего это?

Цитата(kwisp @ 3.7.2009, 9:27) *
да, виджеты могут иметь список действий.
добавляешь действие в виджет, если виджет ловит событие вызывающее действие(обычно уникальная комбинация клавиш, щелчок мышкой в меню и т.д.) то действие посылает сигнал.
ни как со стандартным поведением виджетов кнопок и т.д. действия не связаны.
разработчик сам может добавлять изменять активировать и т.д. действия.


Принцип работы QAction мне понятен. Не понятно где это может применяться на практике(кроме главного окна). Можешь привести пример, для чего может понадобиться определить свои actions у какого-то виджета на форме?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 23:50