crossplatform.ru

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


  Ответ в Работа с checkable QActions
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
RazrFalcon Дата 15.7.2011, 11:29
  Уже сделал как предложил Алексей1153, но с QActionGroup получилось намного проще ( -100 строк кода =) ), и теперь выглядит не как чекбокс, а к как радиобаттон, что и нужно было.
Пример:
Алексей1153 Дата 15.7.2011, 10:40
  Авварон, выходит, что второй вариант уже реализован в классах Qt ))
Авварон Дата 15.7.2011, 10:32
  А теперь приду я и скажу что есть http://doc.qt.nokia.com/latest/qactiongroup.html
Алексей1153 Дата 15.7.2011, 9:47
  нужно поиметь массив указателей/ссылок на элементы (составить самому, либо вытащить из объекта меню динамически). В каждом обработчике вызвать единую функцию с параметром - указатель на текущее выбранное действие. Там необходимо пробежаться по массиву и сбросить всё, что не указатель_из_параметра

Ещё вариант: иметь программную модель набора галочек (std::bitset , к примеру). При выборе галочки модель меняется так, что установлена только одна галочка. Затем модель "распечатывается на экран" (то есть из модели выводится текущее состояние галочек)
RazrFalcon Дата 15.7.2011, 1:52
  В 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-ть - я убьюсь...
Как правильнее реализовать задуманное? Хотелось более компактный код. Спасибо.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 2:28