Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 带有多个图标和文本的复杂按钮_C++_Qt_Qtstylesheets - Fatal编程技术网

C++ 带有多个图标和文本的复杂按钮

C++ 带有多个图标和文本的复杂按钮,c++,qt,qtstylesheets,C++,Qt,Qtstylesheets,我需要创建一个按钮,其中可能包含两个图标和两个文本标签显示(在屏幕截图上-每行,如“电子邮件”或“连接”是一个独立的按钮) 据我所知,我不能覆盖QPushButton或QAbstractButton,我必须实现自己的自定义小部件以实现这样的布局。到目前为止,我正在尝试使用Qt Designer制作这样的按钮,并使用QSS和动态属性更改小部件的样式,但由于某些原因,当我按下按钮时样式表并没有改变。我的代码: 命名空间用户界面 { ViewEntryButton::ViewEntryButton(

我需要创建一个按钮,其中可能包含两个图标和两个文本标签显示(在屏幕截图上-每行,如“电子邮件”或“连接”是一个独立的按钮)

据我所知,我不能覆盖QPushButton或QAbstractButton,我必须实现自己的自定义小部件以实现这样的布局。到目前为止,我正在尝试使用Qt Designer制作这样的按钮,并使用QSS和动态属性更改小部件的样式,但由于某些原因,当我按下按钮时样式表并没有改变。我的代码:

命名空间用户界面
{
ViewEntryButton::ViewEntryButton(QWidget*父项)
:QWidget(父项)
,ui(新ui::ViewEntryButton)
{
用户界面->设置用户界面(此);
}
ViewEntryPutton::~ViewEntryPutton()
{
删除用户界面;
}
void ViewEntryButtown::MousePresseEvent(QMouseEvent*事件)
{
此->设置属性(“按下”,为真);
此->样式()->未抛光(此);
此->样式()->抛光(此);
此->更新();
}
void ViewEntryButtown::mouseReleaseEvent(QMouseEvent*事件)
{
此->设置属性(“按下”,错误);
此->样式()->未抛光(此);
此->样式()->抛光(此);
此->更新();
}
}//名称空间用户界面
以及我应用于Qt Designer对象视图中最高对象的样式表:

#查看按钮{
背景色:透明;
填充物:5px;
左边距:5px;
}
#ViewEntryButton[按下=“true”]{
背景色:rgb(51,025);
边框宽度:3倍;
边框颜色:rgba(255、255、255、20);
边框样式:插图;
}

所以我的问题是: 1.我的方法正确吗?或者可以将
QAbstractButton
子类化并像这样实现它?
2.在这种情况下,我对样式表做了什么错误?为什么当我按下鼠标时小部件的样式没有改变?

您是否尝试过使用构造函数中的setstylesheet函数来更改样式表。这只是另一种做事的方式

Button.setstylesheet("") 

您是否尝试过在构造函数中使用setstylesheet函数更改样式表。这只是另一种做事的方式

Button.setstylesheet("") 

最终使用自定义小部件和透明按钮,我认为这是最好的方法

我在布局的“低”层上创建了必要的标签,并在它们上面添加了一个按钮,背景为
background:transparent属性


此外,布局中的StackingMode应设置为
StackAll

最后使用自定义小部件,在所有其他层之上使用透明按钮,我认为这是最好的方法

我在布局的“低”层上创建了必要的标签,并在它们上面添加了一个按钮,背景为
background:transparent属性

此外,布局中的StackingMode应设置为
StackAll