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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Скрыть-отобразить пункт меню ActionsContextMenu  (Прочитано 3984 раз)
Stek
Гость
« : Август 07, 2012, 09:20 »

Доброго времени суток!

Есть меню из нескольких пунктов, действия к-ых связаны с treewidget. В зависимости от того на каком из item в treewidget мы находимся, нужно скрывать или отображать отдельные пункты меню. Как это реализовать?
Код приблизительно такой ..
Код:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->treeWidget->setContextMenuPolicy(Qt::ActionsContextMenu);


      /*создаём действие и пункт меню*/
      QAction * DeleteTask = new QAction(this);
      DeleteTask->setText("Delete Task");
      DeleteTask->setIcon(QIcon("img/del.png"));
      /*связываем сигнал со слотом*/
      connect(DeleteTask,SIGNAL(triggered()),this,SLOT (deleteRoot()));

      QAction * rootItem2 = new QAction(this);
      rootItem2->setText("Add");
      rootItem2->setIcon(QIcon("img/add.png"));


      /*создаю пунк меню c подменю*/
      QMenu * rootMenu = new QMenu(this);
      rootItem2->setMenu(rootMenu);

      QAction * submenu_0 = new QAction(this);
      submenu_0->setText("0");
      connect(submenu_0,SIGNAL(triggered()),this, SLOT (create_0()));


      QAction * submenu_1 = new QAction(this);
      submenu_1->setText("1");
      connect(submenu_1,SIGNAL(triggered()),this, SLOT (create_1()));


      QAction * submenu_2 = new QAction(this);
      submenu_2->setText("2");
      connect(submenu_2,SIGNAL(triggered()),this, SLOT (create2()));


      rootMenu->addAction(submenu_0);
      rootMenu->addAction(submenu_1);
      rootMenu->addAction(submenu_2);

      ui->treeWidget->addAction(DeleteTask);
      ui->treeWidget->addAction(rootItem2);


}



void MainWindow::on_treeWidget_itemPressed(QTreeWidgetItem *item, int column)
{
//по нажатию на item будет условие при к-ом отображу пункт

    QAction * m_select = new QAction(this);

    m_select->setText("Select");
    m_select->setIcon(QIcon("img.png"));
    connect(m_select,SIGNAL(triggered()),this,SLOT(showM()));
    ui->treeWidget->addAction(m_select);
}

Заранее спасибо Улыбающийся
Записан
_OLEGator_
Гость
« Ответ #1 : Август 07, 2012, 09:44 »

Код
C++ (Qt)
void QAction::setVisible( bool )
Записан
Stek
Гость
« Ответ #2 : Август 07, 2012, 09:51 »

Код
C++ (Qt)
void QAction::setVisible( bool )

пробовал m_select->setVisible(false);

но почему-то не срабатывало. Или я что-то не так делаю?
Записан
_OLEGator_
Гость
« Ответ #3 : Август 07, 2012, 10:08 »

Все работает - косяк у тебя.
Давай код, я не телепат.
Записан
Stek
Гость
« Ответ #4 : Август 07, 2012, 10:28 »

 Строит глазки
Записан
_OLEGator_
Гость
« Ответ #5 : Август 07, 2012, 10:36 »

Красавчик. А теперь понажимай правой кнопкой на элемент с текстом "1" и подумай что у тебя не так.
Записан
Stek
Гость
« Ответ #6 : Август 07, 2012, 10:42 »

Красавчик. А теперь понажимай правой кнопкой на элемент с текстом "1" и подумай что у тебя не так.

Да это всё понятно, пункт будет множится, код косячный и из контекста если можно так сказать. Но на какое событие и как реализовать исчезновение этого пункта меню. Как правильно скрыть пункт меню, пусть даже по нажатию кнопки. Или я чего-то не допонял.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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