ОК, так что давайте начнем с дизайна для вашего случая использования ...
Я бы рекомендовал использовать QListWidget для списка. Каждая строка может быть отдельным элементом.
Вы можете отобразить всплывающее окно для правого клика, но если оно имеет только действие индекса показа, оно действительно не имеет особого смысла. Вы можете сразу показать окно с этим индексом.
Я хотел бы написать что-то вроде этого ниже:
MyClass::MyClass(QObject *parent)
: QObject(parent)
, m_listWidget(new QListWidget(this))
{
QStringList myStringList = QStringList() << "foo" << "bar" << "baz";
m_listWidget->addItems(myStringList);
// Set up your action with the popup for right click if needed
// and connect to the "triggered" signal of the particular action
connect(listWidget, SIGNAL(itemClicked(QListWidgetItem * item)), SLOT(showMessageBox(QListWidgetItem * item)));
...
}
void MyClass::showMessageBox(QListWidgetItem * item)
{
Q_UNUSED(item)
QMessageBox messageBox;
messageBox.setText(m_listWidget->currentRow());
messageBox.exec();
}
Если у вас есть дополнительные действия для правой кнопки мыши, вы можете использовать диалоговое окно всплывающего, да, с несколькими действиями, размещенных на, но до сих пор , это, по-видимому, не является прецедентом здесь.
См. [Пример меню] (http://qt-project.org/doc/qt-5.0/qtwidgets/mainwindows-menus.html). – thuga
@thuga: IMO, это намного больше, чем хочет OP. – lpapp
@ LaszloPapp Да, но это все еще очень полезно. – thuga