0

私は初心者で、Mac で iTunes の情報ダイアログのようなフォーム ウィジェットを作成できないかと考えています。

私は使用してみました:

  • QGroupBox: フレームを取り除く方法が見つかりません。
  • 独自のウィジェットの作成: QVBoxLayout を使用してラベルと QLineEdit ウィジェットの間の間隔を修正する方法が見つかりません (実際には、マージンと間隔の違いをよく理解していません)。
  • QFormLayout: setrowWrapPolicy::WrapAllRows を使用した後、QLabel のサイズを縮小する方法が見つかりません

また、私は(まだ)QtDesignerに慣れていないので、(今のところ)使用したくありません

前もって感謝します

編集:プログラムのいくつかの精度。Mac OS X Mountain Lion で Qt 4.8.1 および 5.0 で QtCreator 2.6.1 を使用しています。

編集2:これがコードです。

QWidget のサブクラス:

MCLineEdit::MCLineEdit(const QString &header)
{
    m_lineEdit = new QLineEdit;
    m_lineTitle = new QLabel(header);

    QVBoxLayout *layout = new QVBoxLayout;        
    layout->addWidget(m_lineTitle);
    layout->addWidget(m_lineEdit);
    layout->setSpacing(0);
    setLayout(layout);
}

ウィジェットを表示するには

myView::myView(QWidget *parent) :
QWidget(parent)
{
    setFixedSize(600, 500);
    MCLineEdit *lineEdit1 = new MCLineEdit("Test 1");
    MCLineEdit *lineEdit2 = new MCLineEdit("Test 2");
    MCLineEdit *lineEdit3 = new MCLineEdit("Test 3");
    MCLineEdit *lineEdit4 = new MCLineEdit("Test 4");

    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addWidget(lineEdit1);
    mainLayout->addWidget(lineEdit2);
    mainLayout->addWidget(lineEdit3);
    mainLayout->addWidget(lineEdit4);
    mainLayout->setSpacing(0);

    setLayout(mainLayout);
}
4

2 に答える 2

1

それで、QtCreatorで少し遊んだ後、ようやく期待どおりの結果を得ることができました。

興味のある人のためのコードは次のとおりです。

myLineEdit:myLineEdit(const QString &header)
{
m_lineEdit = new QLineEdit;
m_groupBox = new QGroupBox;

QFont groupFont;
groupFont.setPixelSize(10);
groupFont.setBold(true);
m_groupBox->setTitle(header);
m_groupBox->setFlat(true);
m_groupBox->setFont(groupFont);
m_groupBox->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);

QFont lineFont;
lineFont.setPixelSize(13);
lineFont.setBold(false);
m_lineEdit->setFont(lineFont);

QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(m_lineEdit);
layout->setContentsMargins(0, 10, 0, 0);
layout->setSpacing(10);
layout->setSizeConstraint(QLayout::SetMinAndMaxSize);
m_groupBox->setLayout(layout);

QHBoxLayout *mainLayout = new QHBoxLayout;
mainLayout->addWidget(m_groupBox);
setLayout(mainLayout);
}

ただし、1 つのコメント: 4.8 では setFlat() メソッドがヘッダーと QLineEdit の間に区切り線を表示するため、Qt 5 でのみ機能します。

jdi の助けに感謝します。

于 2013-01-10T00:37:48.863 に答える