У меня есть список строк во время выполнения.
Любой поможет мне отобразить эти строки в QWidget. Когда я щелкаю правой кнопкой мыши по этой строке, мне нужно иметь опцию показать индекс это покажет индекс этой строки в QMessageBox.
Если это возможно, значит, дайте некоторое техническое руководство.
Спасибо.
Итак, давайте начнем с дизайна для вашего варианта использования …
Я бы порекомендовал использовать QListWidget для списка. Каждая строка может быть отдельным элементом.
Вы можете показать всплывающее окно для щелчка правой кнопкой мыши, но если оно имеет только действие show index, оно само по себе не имеет особого смысла. Вы можете сразу показать окно сообщения с этим индексом.
Я бы написал что-то вроде этого ниже:
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();
}
Если у вас есть больше действий для щелчка правой кнопкой мыши, вы можете использовать всплывающее диалоговое окно, да, с несколькими действиями, но пока что это не похоже на вариант использования здесь.
Других решений пока нет …