2017-11-06 5 views
0

が機能していません。私は既にレイアウトを使用しようとしましたが、動作していません - ボタンはまだ左の枠の隣にあります。ここ コード:私が正しいかではない、それを行う場合Qtのレイアウトは、私は私のアプリでは、ウィンドウの右端にあるボタンを整列する

MainWindow::MainWindow() 
{ 

this->setStyleSheet(
        "QMenu {background-color: #555555; color: #EEEEEE; selection-background-color: #222222; border: 1px solid #222222;}" 
        "QMenuBar {background-color: #555555; color: #EEEEEE;}" 
        "QMenuBar::Item:selected {background-color: #333333; color:#EEEEEE;}" 
        "QMenuBar::Item:pressed {background-color: #111111;}" 
        "QToolBar {background: #555555; border-top: 1px solid #222222;}" 
        "MainWindow {background: black;}" 
        "QToolButton { background-color: transparent; border: none; }" 
        ); 

initButtons(); 
} 

void MainWindow::initButtons() 
{ 
QPushButton *playButton = new QPushButton(this); 
    playButton->setAutoFillBackground(true); 
    playButton->setStyleSheet("background-color: rgb(40, 40, 40);"); 
    playButton->setToolTip("Play"); 
    this->layout()->addWidget(playButton); 
    this->layout()->setAlignment(playButton, Qt::AlignRight); 
} 

誰かが私に言うことはできますか?なぜそれは働いていないのですか?

+0

何レイアウトを設定しましたか? "このウィジェットにインストールされているレイアウトマネージャを返します。レイアウトマネージャがインストールされていない場合は0を返します。" –

+0

(http://doc.qt.io/qt-5/qwidget.html#layoutから)私は、任意のレイアウトを追加さ​​れませんでした。新しいレイアウトを追加しようとすると、 "レイアウトを既に持っているMainWindow" "にQLayoutを追加しようとしています"と言われていますので、すでにレイアウトがあると信じています。 –

+0

人々は何をやっている推測する必要はありませんので、あなたのコード例は、完全に問題のコンテキストを提供する必要があります(たとえば、あなたが 'QMainWindow'と直接作業している知って、整数です)。私は 'Qt'を使用しましたが、私はあなたがメインウィンドウの中央ウィジェットとして設定し、あなたのように構成レイアウトでウィジェットを作成すると信じているので –

答えて

2

はあなたがスペースを追加したい場合は、あなたがspacer itemを使用することができます

右の順に左から、あなたのウィジェットを追加

最初の水平レイアウトを追加する必要があります。あなたは

QWidget * poCentralWidget = new QWidget(this); 
QHBoxLayout * poHLayout = new QHBoxLayout; 
poCentralWidget->setLayout(poHLayout); 

// Spacer item 
QWidget * poSpacerItem = new QWidget(this); 

poSpacerItem->setSizePolicy(
      QSizePolicy::Minimum,QSizePolicy::Maximum); 

// Add spacer item 
poHLayout->addWidget(poSpacerItem); 
// Add your button to the right side. 
poHLayout->addWidget(playButton); 

this->setCentralWidget(poCentralWidget); 
+0

私はこのメッセージが表示されました。ボタンはまだ左側にあります。 –

+0

メインウィンドウを使って作業していることを認識した後、私の答えを編集しました – Simon

+0

それは働いています、ありがとう –

関連する問題