Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: kibsoft от Ноябрь 22, 2009, 23:53



Название: CentralWidget
Отправлено: kibsoft от Ноябрь 22, 2009, 23:53
Можно ли в дизайнере поставить в качестве CentralWidget ListWidget? Или мне все время после qmake придется изменять заголовочный файл? setCantralWidget(listWidget)?


Название: Re: CentralWidget
Отправлено: lit-uriy от Ноябрь 23, 2009, 00:16
Вроде до сих пор нельзя
>>Или мне все время после qmake придется изменять заголовочный файл?
А зачем заголовочный менять? Используй в своём коде setCantralWidget(listWidget), после setupUi(this)


Название: Re: CentralWidget
Отправлено: kibsoft от Ноябрь 23, 2009, 00:18
А ну да вообще-то.. но чет дизайнером создается столько лишнего кода(не только в Qt), похоже лучше вручную все написать..


Название: Re: CentralWidget
Отправлено: kibsoft от Ноябрь 23, 2009, 00:22
После qmake помимо моих виджетов создается еще один QWidget, который делается центральным...имхо - бред...лишние действия просто..


Название: Re: CentralWidget
Отправлено: spectre71 от Ноябрь 23, 2009, 00:29
Вроде до сих пор нельзя
>>Или мне все время после qmake придется изменять заголовочный файл?
А зачем заголовочный менять? Используй в своём коде setCantralWidget(listWidget), после setupUi(this)

Можно не париться и просто положить в дизайнере свой(listWidget) на CantralWidget

После qmake помимо моих виджетов создается еще один QWidget, который делается центральным...имхо - бред...лишние действия просто..

О чем речь?
"помимо моих виджетов создается еще один QWidget"
"еще один" - уже не твой ? :)
и при чем здесь qmake ?



Название: Re: CentralWidget
Отправлено: kibsoft от Ноябрь 23, 2009, 00:36
Цитировать
О чем речь?
"помимо моих виджетов создается еще один QWidget"
"еще один" - уже не твой ? 
и при чем здесь qmake ?
После компиляции в заголовочном файле ui_mainWindow.h сначала создается QWidget, который применяется как центральный.
Код:
QWidget *centralwidget;//автоматически создается
    QVBoxLayout *verticalLayout;
    QTextEdit *textEdit;
    QStatusBar *statusbar;
    QToolBar *toolBar;
...
if (MainWindow->objectName().isEmpty())
            MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
        MainWindow->resize(201, 347);
        centralwidget = new QWidget(MainWindow);
        centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
        verticalLayout = new QVBoxLayout(centralwidget);
        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
        textEdit = new QTextEdit(centralwidget);
        textEdit->setObjectName(QString::fromUtf8("textEdit"));
        verticalLayout->addWidget(textEdit);
        MainWindow->setCentralWidget(centralwidget);//вот он применяется
...
Нахрена он мне нужен? Я конечно понимаю что это не критично вовсе, но бесит :)


Название: Re: CentralWidget
Отправлено: spectre71 от Ноябрь 23, 2009, 00:45
После компиляции в заголовочном файле ui_mainWindow.h сначала создается QWidget, который применяется как центральный.Нахрена он мне нужен? Я конечно понимаю что это не критично вовсе, но бесит :)

Вот именно - не критично и это главное!
Так что не парься. :)


Название: Re: CentralWidget
Отправлено: kibsoft от Ноябрь 23, 2009, 00:51
Так все-таки можно в дизайнере CentralWidget применить или нет? Когда ListWidget находится на другом CentralWidget он ведет себя не так как надо..т.е. растягивается не на всю рабочую область..


Название: Re: CentralWidget
Отправлено: spectre71 от Ноябрь 23, 2009, 01:14
Так все-таки можно в дизайнере CentralWidget применить или нет? Когда ListWidget находится на другом CentralWidget он ведет себя не так как надо..т.е. растягивается не на всю рабочую область..

Примени Layout


Название: Re: CentralWidget
Отправлено: lit-uriy от Ноябрь 23, 2009, 09:53
Вообще это действительно касяк с дизайнером. Я пробовал руками Ui-файл править, т.е. удалял промежуточный QWidget, uic адекватно эту модификацию переваривает.


Название: Re: CentralWidget
Отправлено: _govorilka от Ноябрь 23, 2009, 15:23
Поставить можно, если открыть Ui файл в блокноте (текстовом редакторе) и исправить вот эту строку:

Код:
<widget class="QWidget" name="centralWidget" />

на вот такую:

Код:
<widget class="QListWidget" name="centralWidget" />

В конструкторе нужно установить данный виджет как центральный через функцию QMainWindow::setCentralWidget()
Если указанную выше строчку удалить, то создавать widget Qt не будет, при этом дизайнер будет работать корректно.