0

問題は単純に思えますが、2時間で解決しません。このレイアウトがあります:

QGridLayout* view = new QGridLayout(this);
view->setSpacing(15);
view->addWidget(x0,2,1);
view->addWidget(x1,1,1);
view->addWidget(keyboard,2,0);
view->addWidget(x2,1,0);
view->addWidget(draw,0,0,0,1);
resize ( 650,650);
this->setLayout(view);

「描画」(プロジェクトのグラフィカル部分) がプロジェクトの上端 (行 0、列 0 から列 1) を占める必要があります。

問題は、コンストラクターにどのような値を入れても、次のことです。

void QGridLayout :: addWidget (QWidget * widget, int fromRow, fromColumn int, int rowSpan, columnSpan int, Qt :: Alignment alignment = 0) 

他のすべてのウィジェットはブロックされているようで、プログラムの実行中に対話できません。

古典的なコンストラクタで

void QGridLayout :: addWidget (QWidget * widget, int row, int column, Qt :: Alignment alignment = 0) 

問題はありませんが、ウィジェットの「描画」は目的の場所ではありません (2 列ではなく 1 列のみ)。

私がどこで間違っているか知っている人はいますか?

PS: ウィジェットにはレイアウト設定がありません (キーの最小高さを固定するための数字キーパッドは別として)。

4

1 に答える 1

0

行スパンはリテラルであり、インデックスのような変数ではありません。2 列/行スパンを配置する場合は、スパン パラメータに値 2 を配置する必要があります。view->addWidget(draw,0,0,0,1);したがって、これをに変更する必要がありますview->addWidget(draw,0,0,1,2);。行/列スパン 1 には、「行/列 + 1」ではなく「行/列から」のみが含まれます。

于 2012-09-04T10:48:35.010 に答える