QT creator水平旋转箱

QT creator水平旋转箱,qt,qt-creator,Qt,Qt Creator,有没有办法创建一个箭头指向左右(而不是上下)的QSpinBox?我还没能找到关于这个的任何东西,尽管它看起来很基本 我想您知道qt不直接提供它。 查看下面的文档,它有三个选项 QAbstractSpinBox::UpDownArrows QAbstractSpinBox::PlusMinus QAbstractSpinBox::NoButtons 但您可以使用样式表属性和所需图像设置旋转框的样式 为左右符号提供好的图像文件,并使用样式表设置图像文件,如下所示 QSpinBox::up-but

有没有办法创建一个箭头指向左右(而不是上下)的QSpinBox?我还没能找到关于这个的任何东西,尽管它看起来很基本

我想您知道qt不直接提供它。 查看下面的文档,它有三个选项

QAbstractSpinBox::UpDownArrows
QAbstractSpinBox::PlusMinus
QAbstractSpinBox::NoButtons

但您可以使用样式表属性和所需图像设置旋转框的样式

为左右符号提供好的图像文件,并使用样式表设置图像文件,如下所示

QSpinBox::up-button { image: url(:/images/spinRight.png) }
QSpinBox::down-button { image: url(:/images/spinLeft.png) }

我从未找到Qt本机解决方案,因此尝试使用一些技巧,下面是一个可能的原始示例,其基本思想是使Spinbox裸露(没有本机按钮,并制作您自己的按钮)
setButtonSymbols(QAbstractSpinBox::NoButtons),我只为左/右按钮使用了简单的文本,您可以为按钮选择更奇特的图像:

h

.cpp

{
QHBoxLayout*hlayout=新的QHBoxLayout;
QToolButton*btnLt=新建QToolButton;
btnLt->SETEXT(“”);
spinBx=新的QSpinBox;
spinBx->setButtonSymbols(QAbstractSpinBox::NoButtons);
hlayout->addWidget(btnLt);
hlayout->addWidget(spinBx);
hlayout->addWidget(btnRt);
连接(btnLt,&QToolButton::clicked,this,&main窗口::leftBtn);
连接(btnRt,&QToolButton::clicked,this,&MainWindow::RightBtn);
此->用户界面->中心Widget->设置布局(hlayout);
}
void主窗口::leftBtn()
{
this->spinBx->setValue(this->spinBx->value()-1);
}
void主窗口::rightbn()
{
this->spinBx->setValue(this->spinBx->value()+1);
}

您可以将按钮移动到控件侧,并使用如下样式表为其提供自定义箭头位图:

QSpinBox::down-button  {
  subcontrol-origin: margin;
  subcontrol-position: center left;
  image: url(:/icons/leftArrow.png);
}

QSpinBox::up-button  {
  subcontrol-origin: margin;
  subcontrol-position: center right;
  image: url(:/icons/rightArrow.png);
}
例如,将以下样式表应用于固定高度为26像素的spinbox:

QSpinBox {
  border: 1px solid #ABABAB;
  border-radius: 3px;
}

QSpinBox::up-button  {
  subcontrol-origin: margin;
  subcontrol-position: center left;
  image: url(:/icons/leftArrow.png);
  background-color: #ABABAB;
  left: 1px;
  height: 24px;
  width: 24px;
}

QSpinBox::down-button  {
  subcontrol-origin: margin;
  subcontrol-position: center right;
  image: url(:/icons/rightArrow.png);
  background-color: #ABABAB;
  right: 1px;
  height: 24px;
  width: 24px;
}
要获得此信息:


你可以展示你想要的图片,我可以根据你的描述想到几种类型的spinbox。是的,奇怪的是他们没有实现它!甚至我都想办法把它翻转90度!但是看起来很有趣!我不熟悉,看起来像PyQt?在你的第二个例子中,down=right和up=left,这是不可能的
QSpinBox::down-button  {
  subcontrol-origin: margin;
  subcontrol-position: center left;
  image: url(:/icons/leftArrow.png);
}

QSpinBox::up-button  {
  subcontrol-origin: margin;
  subcontrol-position: center right;
  image: url(:/icons/rightArrow.png);
}
QSpinBox {
  border: 1px solid #ABABAB;
  border-radius: 3px;
}

QSpinBox::up-button  {
  subcontrol-origin: margin;
  subcontrol-position: center left;
  image: url(:/icons/leftArrow.png);
  background-color: #ABABAB;
  left: 1px;
  height: 24px;
  width: 24px;
}

QSpinBox::down-button  {
  subcontrol-origin: margin;
  subcontrol-position: center right;
  image: url(:/icons/rightArrow.png);
  background-color: #ABABAB;
  right: 1px;
  height: 24px;
  width: 24px;
}