Почему я не могу установить, чтобы у моего QDialog не было sizeGrip? - PullRequest
0 голосов
/ 18 февраля 2011

В соответствии с документами QT4 sizeGrip QDialog по умолчанию отключен, однако у меня он есть в любом случае. Поэтому я пытаюсь запустить setSizeGripEnabled (false), и у меня все еще есть. Итак, что-то еще должно быть причиной этого, но я не знаю что. Если это имеет значение, у моего диалогового окна в настоящее время нет родителя, потому что я его проектирую / тестирую. Я не понимаю, почему это должно иметь значение, но просто упомянуть об этом на случай, если это произойдет по какой-то причине. Вот мой полный код:

#include "QtGui"
//#include "clposter.h"

void add_new_account()
{
    // CHECK::Make sure this process is destroyed when it's supposed to be
    // TODO::connect signals to slots
    //
    // Create Dialog box to add user account
    QDialog *accountDialog = new QDialog();
    accountDialog->setModal(true);
    accountDialog->setWindowTitle("Add New Account");
    accountDialog->setSizeGripEnabled(false);

    // Create Main Layout
    QVBoxLayout *mainVBox = new QVBoxLayout(accountDialog);

    QLabel *accountNameLabel = new QLabel(accountDialog);
    accountNameLabel->setText("Account:");
    QLineEdit *accountName = new QLineEdit(accountDialog);
    accountName->setMinimumWidth(250);
    QLabel *accountPassLabel = new QLabel(accountDialog);
    accountPassLabel->setText("Password:");
    QLineEdit *accountPass = new QLineEdit(accountDialog);
    accountPass->setEchoMode(QLineEdit::Password);

    // NOTE::May want to use standard dialog buttons instead
    QPushButton *okButton = new QPushButton("Ok", accountDialog);
    QPushButton *cancelButton = new QPushButton("Cancel", accountDialog);

    // Connect signals to slots

    // Set layout
    // CHECK::Should accountDialog be the parent for these? I get a warning that they cannot be set
    //        because accountDialog already has a layout, which is expected, but I want them to
    //        automatically be deleted when accountDialog is so it makes sense to make it the parent.
    QVBoxLayout *labelsVBox = new QVBoxLayout(accountDialog);
    labelsVBox->addWidget(accountNameLabel);
    labelsVBox->addWidget(accountPassLabel);

    QVBoxLayout *lineEditsVBox = new QVBoxLayout(accountDialog);
    lineEditsVBox->addWidget(accountName);
    lineEditsVBox->addWidget(accountPass);

    QHBoxLayout *topHBox = new QHBoxLayout(accountDialog);
    topHBox->addLayout(labelsVBox);
    topHBox->addLayout(lineEditsVBox);

    QHBoxLayout *buttonHBox = new QHBoxLayout(accountDialog);
    buttonHBox->addStretch();
    buttonHBox->addWidget(okButton);
    buttonHBox->addWidget(cancelButton);

    mainVBox->addLayout(topHBox);
    mainVBox->addLayout(buttonHBox);

    accountDialog->setLayout(mainVBox);

    // Show Dialog
    accountDialog->exec();
}

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    //CLPoster mainWin;
    //mainWin.show();
    add_new_account();

    return app.exec();
}

1 Ответ

1 голос
/ 19 февраля 2011

Установка родительского элемента не должна влиять на что-либо.

Вы можете обойти это, установив для Dialog фиксированный размер, используя setFixedSize (width, height);

Однако это определеннообойти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...