2014-10-15 5 views
2

я пытаюсь добавить действия к QListWidget, как это:добавления действия в QListWidget

toolItems = new QListWidget(this); 
toolItems->addAction(ui->itemLight); 
toolItems->addAction(ui->itemDarkLight); 
toolItems->addAction(ui->itemCameraPos); 
toolItems->addAction(ui->itemCamera); 
toolItems->addAction(ui->itemRounded); 
toolItems->addAction(ui->itemLightbulb); 
toolItems->addAction(ui->itemCommentOnScreen); 

Но проблема в том, что это ничего не отображает, но все действия имеют текст ?! Как я могу это исправить?

+0

что бы вы хотели достичь? Что-то вроде QMenu? –

+0

Нет, список с элементами, при нажатии на него делает предпочтительное действие. – Jan

ответ

5

Это нормально, потому что QListWidget не поддерживает добавление действий. Вам необходимо прочитать документацию и использовать метод QListWidget::addItem.

Но вы можете создать элементы из действий:

QListWidgetItem *createItemFromAction(const QAction* action) 
{ 
    Q_ASSERT(action); 
    QListWidgetItem *item = new QListWidgetItem(); 
    item->setText(action->text()); 
    item->setToolTip(action->toolTip()); 
    item->setIcon(action->icon()); 
    // ... 
    return item; 
} 
//... 
toolItems->addAction(createItemFromAction(ui->itemCommentOnScreen)); 
+0

@Jan и не забывайте, что ваше базовое действие может быть изменено, поэтому вам нужно поймать «измененный» сигнал и обновить элемент виджета. –

+0

Кстати, у меня теперь проблема: createItemFromAction не был объявлен в этой области. как я могу это исправить? – Jan

+0

Это просто образец. Вы должны создать его как метод. Я думаю, что вы спрашиваете о базовых вещах C++. –

 Смежные вопросы

  • Нет связанных вопросов^_^