1

私が開発しているアプリケーションでは、次QPushButtonのように互いにオーバーレイする s のセットがあります。

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();

結果:

ここに画像の説明を入力

ただし、次のスタイルがアプリケーションレベルで追加されると

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

ボタンは次のようにレンダリングされます。

ここに画像の説明を入力

このアーティファクトの理由は何ですか?どうすれば回避できますか?

私のアプリケーションに関する情報 重なっているボタンは、仮想キーボードの異なる文字セットに属するキーです。これらのキーは、現在の文字セットに応じて上下します。

4

1 に答える 1

2

QStackedWidgetを使用し、QPushButtonsをそのスタックに配置します。次に、 QStackedWidget::setCurrentIndexまたはQStackedWidget::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);
于 2013-07-22T21:40:48.403 に答える