QSplitter在两个小部件之间显示分隔符或边距

Nic*_*ick 7 c++ layout user-interface qt margin

我有一个QSplitter和两个小部件,但我希望能够有一个保证金,以便两个小部件之间有一个明确的过渡.我查看了QSplitter和QSplitterHandle,但没有看到任何明确的方法.

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

Liz*_*Liz 12

样式表是用于更改Qt中任何窗口小部件外观的强大机制.

请参阅此处获取快速教程,此处参考指南.样式表可以使用Designer中的编辑器分配,也可以使用setStylesheet(QString)作为字符串传递.使用Designer肯定更容易,因为在运行它之前你可以看到你的小部件会是什么样子.

现在,针对您的具体问题.QSplitter本质上是一个QFrame.但它也包括一个手柄 - 如你所知.通常这就是通常的风格.

所以,例如你可以这样做:

QSplitter::handle {
         image: url(:/images/splitter.png);
     }
Run Code Online (Sandbox Code Playgroud)

这为分离器手柄提供了图像.这有点类似于在Motif下完成的操作,其中总是显示一个小矩形手柄,用户可以单击以移动分割器.

通过一些实验,您可以为您的手柄创建一个很酷的分离线.

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);
     }
Run Code Online (Sandbox Code Playgroud)

或者更像这样的东西.

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;
}
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助.一旦你开始玩Style Sheet,乐趣才真正开始.