crossplatform.ru

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

> Работа с checkable QActions
RazrFalcon
  опции профиля:
сообщение 15.7.2011, 1:52
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


В QMenu есть 3- QAction. Они отвечают за отображение текста в проге.
После выбора нужного, мне нужно со всех остальных снять "галочку". В итоге выходит вот что (реальный, рабочий кусок моего кода):
void QMediaInfo::on_actionAsText_triggered()
{
  if (actionAsText->isChecked() && cmbBoxFiles->count()!=0) {
    actionAsTree->setChecked(false);
    actionAsPseudoTree->setChecked(false);
    updateInfo();
  } else
    actionAsText->setChecked(true);
}

void QMediaInfo::on_actionAsTree_triggered()
{
  if (actionAsTree->isChecked() && cmbBoxFiles->count()!=0) {
    actionAsText->setChecked(false);
    actionAsPseudoTree->setChecked(false);
    updateInfo();
  } else
    actionAsTree->setChecked(true);
}

void QMediaInfo::on_actionAsPseudoTree_triggered()
{
  if (actionAsPseudoTree->isChecked() && cmbBoxFiles->count()!=0) {
    actionAsText->setChecked(false);
    actionAsTree->setChecked(false);
    updateInfo();
  } else
    actionAsTree->setChecked(true);
}
Если видов будет не 3-и, а 10-ть - я убьюсь...
Как правильнее реализовать задуманное? Хотелось более компактный код. Спасибо.

Сообщение отредактировал RazrFalcon - 15.7.2011, 1:53
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 15.7.2011, 9:47
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


нужно поиметь массив указателей/ссылок на элементы (составить самому, либо вытащить из объекта меню динамически). В каждом обработчике вызвать единую функцию с параметром - указатель на текущее выбранное действие. Там необходимо пробежаться по массиву и сбросить всё, что не указатель_из_параметра

Ещё вариант: иметь программную модель набора галочек (std::bitset , к примеру). При выборе галочки модель меняется так, что установлена только одна галочка. Затем модель "распечатывается на экран" (то есть из модели выводится текущее состояние галочек)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


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




RSS Текстовая версия Сейчас: 27.4.2024, 13:01