在qt中创建一个可切换的文本小部件

时间:2015-06-13 23:43:48

标签: qt pyside

我不想使用传统的复选框,而是希望使用更易读的格式来显示我的选项。为了准确显示我想要的内容,我用我非常熟悉的语言实现了它。

是否可以使用Qt重新创建以下示例?如果是这样,我想了解如何做到这一点,我不明白如何以非黑客的方式做到这一点。

var $ = document.querySelector.bind(document);

var toggle = $('.toggle');
var first = toggle.firstChild;
var last = toggle.lastChild;
last.style.display = "none";

function hide(el) {
  el.style.display = "none";
}

function show(el) {
  el.style.display = "inherit";
}

var current = false;
toggle.addEventListener("click", function () {
  current = !current;
  if (!current) {
    hide(last);
    show(first);
  } else {
    show(last);
    hide(first);
  }
});
span.toggle {
  border-bottom: 1px dashed;
}

span.toggle:hover {
  cursor: pointer;
}
<p class="example">I will start <span class="toggle"><span>minimized</span><span>maximized</span></span>!</p>

1 个答案:

答案 0 :(得分:1)

您可以通过连接linkActivated的{​​{1}}信号来实现此目的。 QLabel可以包含富文本,例如网址,点击后会发出QLabel信号。下面列出了一个最小的例子。

在此示例中,我们创建了一个linkActivated,其中包含一些富文本,其中包含可点击文本周围的锚点(我称之为锚QLabel,但它可以是任何内容)。单击时,它会触发#toggle方法,该方法会根据锚点更改文本。因此,我们在两个锚linkclicked#toggle之间切换,同时也更改了文字。

#toggle2

这显然是一个极小的例子。您可以将当前状态存储在布尔变量中,并根据该状态切换文本(不需要多个锚名称)或其他所有内容!希望这能为您提供一个可以扩展的基本想法。