Qt中如何修改scrollBar的setPage?
How to change the setPage of scrollBar in Qt?
我在 Qt 上使用 scrollAreaWidgetContents 创建了一个包含 64 个项目的列表,该列表如下所示:
我想当我按下向下滚动箭头时,我得到 4 个句子而不是 5 个。因此,只要单击向下或向上箭头,我就会跳过一个句子。
scrollArea的样式表代码:
QFrame{
border:solid;
}
QScrollBar:vertical {
width: 15px;
margin: 30px 0 30px 0;
border-style: solid;
}
QScrollBar::handle:vertical {
min-height: 30px;
border: solid ;
}
QScrollBar::add-line:vertical {
subcontrol-position: bottom;
subcontrol-origin: margin;
border: solid ;
height: 30px;
}
QScrollBar::sub-line:vertical {
subcontrol-position: up;
subcontrol-origin: margin;
border: solid ;
height: 30px;
}
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
background: none;
}
QScrollBar::up-arrow:vertical
{
image: url(icons/Freccia_Su.png);
}
QScrollBar::down-arrow:vertical
{
image: url(icons/Freccia_Giu.png);
}
我在 QScrollBar
的文档中找到了 setPage
但我不明白如何添加它?有人可以帮我解决这个问题吗?
我想您可能对 QScrollArea 期望过高。我无法从你的问题中看出你是如何设置 QScrollArea 的内容的,但是如果你已经将 QTextEdit 设置为它的小部件,那么 QScrollArea 就不知道任何关于文本大小的信息,例如。
你最好看看 QListWidget:
//assuming a ui with a QListWidget called listWidget
ui.setupUi(this);
QStringList items;
for (int i = 0; i < 100; i++)
items << "item " + QString::number(i);
ui.listWidget->insertItems(0, items);
每次单击滚动条,这将自动滚动一项。
您可以使用 QListWidgetItem 创建更复杂的列表条目(请参阅 QListWidget 的文档)。
项目本身可以包含小部件,因此您可以拥有带有单选按钮等的自定义小部件,并使用 QListWidget::setItemWidget() 在每个项目上进行设置。滚动将考虑小部件的大小。
我在 Qt 上使用 scrollAreaWidgetContents 创建了一个包含 64 个项目的列表,该列表如下所示:
我想当我按下向下滚动箭头时,我得到 4 个句子而不是 5 个。因此,只要单击向下或向上箭头,我就会跳过一个句子。
scrollArea的样式表代码:
QFrame{
border:solid;
}
QScrollBar:vertical {
width: 15px;
margin: 30px 0 30px 0;
border-style: solid;
}
QScrollBar::handle:vertical {
min-height: 30px;
border: solid ;
}
QScrollBar::add-line:vertical {
subcontrol-position: bottom;
subcontrol-origin: margin;
border: solid ;
height: 30px;
}
QScrollBar::sub-line:vertical {
subcontrol-position: up;
subcontrol-origin: margin;
border: solid ;
height: 30px;
}
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
background: none;
}
QScrollBar::up-arrow:vertical
{
image: url(icons/Freccia_Su.png);
}
QScrollBar::down-arrow:vertical
{
image: url(icons/Freccia_Giu.png);
}
我在 QScrollBar
的文档中找到了 setPage
但我不明白如何添加它?有人可以帮我解决这个问题吗?
我想您可能对 QScrollArea 期望过高。我无法从你的问题中看出你是如何设置 QScrollArea 的内容的,但是如果你已经将 QTextEdit 设置为它的小部件,那么 QScrollArea 就不知道任何关于文本大小的信息,例如。 你最好看看 QListWidget:
//assuming a ui with a QListWidget called listWidget
ui.setupUi(this);
QStringList items;
for (int i = 0; i < 100; i++)
items << "item " + QString::number(i);
ui.listWidget->insertItems(0, items);
每次单击滚动条,这将自动滚动一项。
您可以使用 QListWidgetItem 创建更复杂的列表条目(请参阅 QListWidget 的文档)。
项目本身可以包含小部件,因此您可以拥有带有单选按钮等的自定义小部件,并使用 QListWidget::setItemWidget() 在每个项目上进行设置。滚动将考虑小部件的大小。