【问题标题】:Make QLabel text selectable?使 QLabel 文本可选择?
【发布时间】:2013-07-31 05:35:28
【问题描述】:

我的应用程序中有一个QLabel,它向用户显示错误消息。我想让标签的文本可选择,以便用户可以在需要时复制和粘贴错误消息。

但是,当我使用鼠标单击并拖动文本时,没有任何反应 - 文本未被选中。

如何使QLabel 中的文本可以被鼠标选中?

【问题讨论】:

  • Downvoter - 想解释一下为什么这是一个不好的问题?我该如何改进它?
  • 我没有投反对票,但可以通过最少的研究(例如阅读文档)来回答这个问题。这是首选的方式,而不是过早地提问。几分钟后你甚至自己回答了这个问题。
  • @Skalli - 您一定不熟悉 SO 文章 It’s OK to Ask and Answer Your Own Questions。实际上,我使用内置的“回答您自己的问题功能”立即回答了这个问题。我在回答中展示了我所做的研究,因为阅读文档和快速的 Google 搜索实际上并没有帮助我,而且我想在将来节省其他人的时间。
  • 这是有道理的,我收回我之前的声明。我不知道这篇文章,我想这个问题在这件事上是合格的。 :)

标签: c++ qt


【解决方案1】:

代码

QLabel 的文本可以通过鼠标选择,如下所示:

label->setTextInteractionFlags(Qt::TextSelectableByMouse);

这可以在QLabel documentation 中找到。

您可以使用相同的功能使链接可以通过键盘选择、突出显示 URL 链接以及使文本可编辑。见Qt::TextInteractionFlag

设计师

QLabel 菜单下搜索textInteractionFlags 并设置标志TextSelectableByMouse

【讨论】:

  • 如果您希望鼠标光标在悬停时改变,您可以添加:label->setCursor(QCursor(Qt::IBeamCursor));
【解决方案2】:

这里还有一个方法,供参考... 你可以创建一个 QLineEdit 子类,调整为看起来和行为像一个 QLabel, 在构造函数中:

 setReadOnly(true);
 setFrame(false);
 QPalette palette = this->palette();
 palette.setColor(QPalette::Base, palette.color(QPalette::Background));
 setPalette(palette);

我认为接受的答案比这个更简单,更可取。

【讨论】:

    猜你喜欢
    • 2021-11-07
    • 2013-05-21
    • 1970-01-01
    • 2018-06-09
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    相关资源
    最近更新 更多