【问题标题】:How to show list of strings in QT at run time?如何在运行时显示 QT 中的字符串列表?
【发布时间】:2014-01-10 07:05:55
【问题描述】:

我在运行时有一个字符串列表。

任何人都可以帮助我在 QWidget 中显示这些字符串。当我右键单击该字符串时,我需要一个选项 show index 将在 QMessageBox 中显示该字符串的索引。

如果可能,请提供一些技术指导。

谢谢。

【问题讨论】:

  • menu example
  • @thuga:IMO,这比 OP 想要的要多得多。
  • @LaszloPapp 是的,但它仍然很有帮助。
  • @thuga:我的经验表明很多代码只会让初学者感到困惑。
  • 获取字符串到 GUI 的最简单方法是创建 QTextEdit 或 QPlainTextEdit,并将字符串附加到它。

标签: c++ qt qwidget qtgui qmessagebox


【解决方案1】:

好的,让我们开始为您的用例设计...

  • 我建议使用 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();
}

如果您有更多右键单击操作,您可以使用弹出对话框,是的,其中放置了几个操作,但到目前为止,这似乎不是这里的用例。

【讨论】:

  • 你是天才。再次感谢你。 :D :D。编辑:我需要弹出菜单来添加其他一些菜单以进行进一步处理。但没关系。现在我学会了添加弹出菜单。感谢您的帮助。
  • @user3176618:不客气,但请在未来提出更多问题。
  • 我是编程新手,所以我会尝试这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 2020-12-12
  • 1970-01-01
相关资源
最近更新 更多