0
primaryColumnCombo->setMinimumSize(
        secondaryColumnCombo->sizeHint());

上記のコードは正常に実行できます。しかし、Qt のヘルプによると、setMinimumSize() には 3 つのタイプがあります。

QSize   minimumSize () const
void    setMinimumSize ( const QSize & )
void    setMinimumSize ( int minw, int minh )

そして、ここで2番目のタイプが実行されると思います。QSize &しかし、引数としてa が必要です。コード内で ? を受け入れることができるのはなぜQSizeですか?

4

2 に答える 2

2

あなたの質問をよく理解しているかどうかはわかりません。あなたが求めているのが、関数にパラメーターをconst SomeType &として渡すこととSomeTypeだけを渡すことの違いだけである場合、これに関するドキュメントはたくさんありますが、ここに簡単な概要がありますいつ、どれを使うか...

myFunction(const SomeType &)

コピーがコストのかかる操作である場合は、パラメーターをそのまま渡します(つまり、コストがかかるということは... コピーは多くの CPU リソースと処理能力を消費します)。

myFunction(type)

コピーが高価な操作ではない場合に使用します。通常、これはプリミティブ型とコピー オン ライト オブジェクトに使用されます。

于 2013-03-16T07:04:39.643 に答える
0

setMinimumSize には、実際には 2 種類しかありません。QSize minimumSize() const現在の最小サイズを返すアクセサです。最小サイズを設定することはできません。

最初のvoid setMinimumSize(const QSize&)は QSize を取ります。これは基本的に、幅と高さが一緒にパッケージ化されたものです。これは、Qt の関数がオブジェクトを受け入れるための標準的な方法であるため、const 参照によって QSize を受け入れます。なぜ彼らがその慣行に従うのかについての詳細は、この回答にあります。

2 つ目void setMinimumSize(int minw, int minh)は、幅と高さをパラメーターのペアとして受け取ります。

両者に違いはありません。渡すQSizeがすでにある場合、または整数のペアがすでにある場合に備えて、便利なように2つの関数を提供するだけです。あなたの例は前者のケースであり、期待どおりに機能するはずです。

于 2013-03-16T05:07:18.347 に答える