QSplitter显示两个小部件之间的分隔符或边距
QSplitter show a divider or a margin between the two widgets
我有一个QSplitter和两个小部件,但我希望能够有一个边距,以便在两个小部件之间有一个清晰的过渡。我看了QSplitter和QSplitterHandle,但没有看到任何明确的方式这样做。
如何在两个小部件之间添加分隔符?
样式表是一种强大的机制,可以改变Qt中任何小部件的外观。
查看这里的快速教程,这里是参考指南。可以使用设计器中的编辑器分配样式表,或者使用setStylesheet(QString)作为字符串传递样式表。使用设计器当然更容易,因为这样你就可以在运行小部件之前看到它的样子。
现在,针对你的具体问题。一个QSplitter本质上是一个QFrame。但它也包括一个句柄,如你所知。这就是典型的样式
例如,你可以这样写:
QSplitter::handle {
image: url(:/images/splitter.png);
}
为拆分器句柄提供图像。这有点类似于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);
}
或者画得更像这个
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,和宽度,如果我们改变垂直分条器需要不同。
希望这对你有帮助。一旦开始使用样式表,乐趣就真正开始了。
不用深入讨论样式表的所有细节,我可以给你几个选择:
1)你可以在你的分配器中布局几个qframe,给它们布局,然后把你的小部件放在那些框架中。你可以使用布局的间距选项(参见QLayout::setContentsMargin())在你的小部件周围添加一些间距。
2)样式表的方法(在我看来是更好的方法)是为您的小部件设置一些样式表。举个简单的例子,你可以对分配器中的小部件做如下操作:
widget->setStyleSheet( "margin-left: 10px" )
如果你正在用Qt做任何类型的GUI设计,我强烈建议你学习所有关于样式表的知识,它们是你的朋友。
QSplitter
有一个可以设置的handleWidth
属性。
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- 同一分隔符之间的多个子字符串
- 使用正则表达式c++从单词和分隔符之间的字符串中提取所有子字符串
- C++获取两个分隔符之间的字符串并替换它
- 使用std::filesystem::path在分隔符类型之间进行转换
- 在分隔符之间获取字符串
- Windows 和 Linux 之间的行尾分隔符转换
- 提升精神 - 修剪最后一个字符和分隔符之间的空格
- C++ 获取两个分隔符字符串之间的字符串
- 如何在没有多余整数的情况下填充整数之间的分隔符
- 从c++中的字符串中提取两个分隔符之间的子字符串
- boost::tokenizer来考虑分隔符之间是否缺少令牌
- 将范围之间的字符串向量转换为带分隔符的字符串(允许增强)
- QSplitter显示两个小部件之间的分隔符或边距
- 移动字符串中的单词,单词之间使用空格作为分隔符