c++ - QSplitter 显示两个小部件之间的分隔符或边距

标签 c++ qt user-interface layout margin

我在两边都有一个 QSplitter 和两个小部件,但我希望能够有一个边距,以便两个小部件之间有一个清晰的过渡。我查看了 QSplitter 和 QSplitterHandle,但没有看到任何明确的方法。

如何在两个小部件之间添加分隔线?

最佳答案

样式表是一种强大的机制,可用于更改 Qt 中任何小部件的外观。

参见 here获取快速教程,以及 here引用指南。可以使用 Designer 中的编辑器分配样式表,或使用 setStylesheet(QString) 作为字符串传递。使用 Designer 肯定更容易,因为这样您就可以在运行小部件之前看到它的外观。

现在,针对您的具体问题。 QSplitter 本质上是一个 QFrame。但它还包括一个 handle - 如您所知。所以通常这就是通常的样式。

因此,例如您可以这样做:

QSplitter::handle {
         image: url(:/images/splitter.png);
     }

它为拆分器 handle 提供图像。这有点类似于在 Motif 下所做的,其中始终显示一个小的矩形 handle ,用户可以单击它来移动拆分器。

通过一些实验,您可以为 handle 创建一条很酷的分隔线。

QSplitter::handle {
    background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, 
stop:0 rgba(255, 255, 255, 0), 
stop:0.407273 rgba(200, 200, 200, 255), 
stop:0.4825 rgba(101, 104, 113, 235), 
stop:0.6 rgba(255, 255, 255, 0));
    image: url(:/images/splitter.png);
     }

或者更像这幅画的东西。

QSplitter::handle:horizontal {
background: qlineargradient(x1:0, y1:0, x2:1, y2:1,
    stop:0 #eee, stop:1 #ccc);
border: 1px solid #777;
width: 13px;
margin-top: 2px;
margin-bottom: 2px;
border-radius: 4px;
}

对于最后一个,我们专门只覆盖水平分割器,因为某些属性 - 如 margin-top 和 bottom,以及如果我们更改垂直分割器则需要不同的宽度。

希望这对您有所帮助。一旦开始使用样式表,乐趣就真正开始了。

关于c++ - QSplitter 显示两个小部件之间的分隔符或边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6832499/

相关文章:

c++ - S60 应用程序 - Symbian C++ - 退出按钮不起作用

android - 如何在 Qt Android 应用程序上禁用屏幕保护程序

java - 为基于 Java 的 Web 应用程序生成 GUI

java - 如何在 JFileChooser 中拥有可编辑的地址栏(Windows 风格)

C++字符串问题

c++ - 如何获得调用堆栈回溯? (深度嵌入,无库支持)

c++ - 如何获取调用方方法的名称或文件和行?

c++ - qt creator 看不到 qwt header

Qt - 将 QString 转换为 Unicode QByteArray

jQuery UI slider 背景