1

QWidget から派生したクラス MyListWidget があります。親とフラグを基本クラスの QWidget コンストラクターに渡しました (テストで Qt::Dialog と Qt::Popup の両方を試しました) が、カスタム ウィジェットは画面の中央に表示され、代わりにその親の中央に表示されます。

MyListWidget* myListWidget = new MyListWidget(this, Qt::Dialog);

これはコンストラクタです:

MyListWidget::MyListWidget(QWidget* parent, Qt::WindowFlags flags)
    : QWidget(parent, flags),
      ui(std::auto_ptr<Ui::MyListWidget>(new Ui::MyListWidget))
{
    ui->setupUi(this);
}

このウィジェットを別のダイアログに配置すると、すべてが期待どおりに機能します。しかし、なぜ?

ラッピング作品:

QDialog* popup = new QDialog(this, Qt::Popup);
QVBoxLayout* hLayout = new QVBoxLayout(popup);

// ... doing list creation like above

hLayout->addWidget(mmyListWidget);
popup->setLayout(hLayout);
const int width = mapListWidget->width();
const int height = mapListWidget->height();
popup->resize(width, height);

ここで何が起こったのでしょうか?

4

2 に答える 2