样式应用于重叠Qt PushButtons时的视觉瑕疵

时间:2013-07-22 18:07:11

标签: c++ qt

在我正在开发的应用程序中,我已经有了QPushButton个彼此重叠的集合:

resize(300, 300);
QRect geometry( 100, 100 , 100 , 100 );

m_button[0] = new QPushButton( this );
m_button[0]->setGeometry( geometry );
m_button[0]->setText( "Button 1" );

m_button[1] = new QPushButton( this );
m_button[1]->setGeometry( geometry );
m_button[1]->setText( "Button 2" );

m_button[1]->raise();

结果:

enter image description here

但是在应用程序级别添加以下样式

QApplication app(argc, argv);
app.setStyleSheet( "QPushButton{ border-width: 1px; border-color: blue; border-style: solid;}" );

按钮的渲染方式如下:

enter image description here

这个人工制品的原因是什么,以及如何解决它。

有关我的申请的信息 重叠按钮是属于虚拟键盘的不同字符集的键。这些键根据当前字符集升高或降低。

1 个答案:

答案 0 :(得分:2)

您想使用QStackedWidget并将QPushButtons放在该堆栈中。然后,您只需使用QStackedWidget::setCurrentIndexQStackedWidget::setCurrentWidget提升所需的按钮。

编辑:示例代码:

resize(300, 300);
QStackedWidget* stack = new QStackedWidget(this);
stack->setGeometry( 100, 100 , 100 , 100 );

m_button[0] = new QPushButton( this );
m_button[0]->setText( "Button 1 );
stack->addWidget(m_button[0]);

m_button[1] = new QPushButton( this );
m_button[1]->setText( "Button 2" );
stack->addWidget(m_button[1]);

stack->setCurrentWidget(m_button[1]);    //or stack->setCurrentIndex(1);