Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Stek от Август 07, 2012, 09:20



Название: Скрыть-отобразить пункт меню ActionsContextMenu
Отправлено: 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);
}

Заранее спасибо :)


Название: Re: Скрыть-отобразить пункт меню ActionsContextMenu
Отправлено: _OLEGator_ от Август 07, 2012, 09:44
Код
C++ (Qt)
void QAction::setVisible( bool )


Название: Re: Скрыть-отобразить пункт меню ActionsContextMenu
Отправлено: Stek от Август 07, 2012, 09:51
Код
C++ (Qt)
void QAction::setVisible( bool )

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

но почему-то не срабатывало. Или я что-то не так делаю?


Название: Re: Скрыть-отобразить пункт меню ActionsContextMenu
Отправлено: _OLEGator_ от Август 07, 2012, 10:08
Все работает - косяк у тебя.
Давай код, я не телепат.


Название: Re: Скрыть-отобразить пункт меню ActionsContextMenu
Отправлено: Stek от Август 07, 2012, 10:28
 ::)


Название: Re: Скрыть-отобразить пункт меню ActionsContextMenu
Отправлено: _OLEGator_ от Август 07, 2012, 10:36
Красавчик. А теперь понажимай правой кнопкой на элемент с текстом "1" и подумай что у тебя не так.


Название: Re: Скрыть-отобразить пункт меню ActionsContextMenu
Отправлено: Stek от Август 07, 2012, 10:42
Красавчик. А теперь понажимай правой кнопкой на элемент с текстом "1" и подумай что у тебя не так.

Да это всё понятно, пункт будет множится, код косячный и из контекста если можно так сказать. Но на какое событие и как реализовать исчезновение этого пункта меню. Как правильно скрыть пункт меню, пусть даже по нажатию кнопки. Или я чего-то не допонял.