Russian Qt Forum
Апрель 19, 2024, 04:25
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Создания виджета
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Создания виджета (Прочитано 9069 раз)
vanix
Гость
Создания виджета
«
:
Февраль 16, 2011, 17:23 »
Вопрос в следующем: создаю главный виджет и зависимый следующим образом:
Код:
#include <QtGui>
int main(int argc, char *argv[]){
QApplication a(argc, argv);
QWidget mainWidget;
mainWidget.show();
QWidget commandWidget = new QWidget(&mainWidget);
commandWidget.show();
return a.exec();
}
при сборке выдается следующее сообщение:
conversion from 'QWidget*' to non-scalar type 'QWidget' requested
Если убрать = new QWidget(&mainWidget), то естественно все собирается и работает.
В чем ошибка? Хотя, если следовать хелпу, то все должно быть правильно.
Описание конструктора QWidget:
QWidget::QWidget ( QWidget * parent = 0, Qt::WindowFlags f = 0 )
Constructs a widget which is a child of parent, with widget flags set to f.
Записан
twp
Гость
Re: Создания виджета
«
Ответ #1 :
Февраль 16, 2011, 17:28 »
Код:
QWidget *commandWidget = new QWidget(&mainWidget);
Записан
vanix
Гость
Re: Создания виджета
«
Ответ #2 :
Февраль 16, 2011, 17:42 »
twp, спасибо.
но тут возникает другой вопрос.
Код:
#include <QtGui>
int main(int argc, char *argv[]){
QApplication a(argc, argv);
QWidget mainWidget;
mainWidget.setGeometry(0,20,1024,550);
mainWidget.show();
QWidget* commandWidget = new QWidget(&mainWidget);
commandWidget->setGeometry(0, 600, 1024, 50);
commandWidget->show();
return a.exec();
}
В результате выполнения, я чего то подчиненного виджета не наблюдаю?? Что тут опять не так?
«
Последнее редактирование: Февраль 16, 2011, 17:44 от vanix
»
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Создания виджета
«
Ответ #3 :
Февраль 16, 2011, 17:43 »
Другой вопрос не ясен.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vanix
Гость
Re: Создания виджета
«
Ответ #4 :
Февраль 16, 2011, 17:45 »
извините за оффтоп:
я правил пост ))
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Создания виджета
«
Ответ #5 :
Февраль 16, 2011, 17:51 »
Ты его не видишь, но он существует.
Замени второй QWidget на, к примеру, QLineEdit.
И читай про компоновку.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
ruzik
Гость
Re: Создания виджета
«
Ответ #6 :
Февраль 16, 2011, 17:59 »
Вот например
Код:
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton *newbtn = new QPushButton(QObject::tr("OK"));//создается новая кнопка с надписью ок
QObject::connect(newbtn, SIGNAL(clicked()), &app, SLOT(quit())); //соединяется сигнал "Нажатие" кнопки и слот "выход" формы
newbtn->resize(180,40); //изменяется длина/ширина
newbtn->show(); //кнопка показываетя
return app.exec();
}
Записан
vanix
Гость
Re: Создания виджета
«
Ответ #7 :
Февраль 16, 2011, 18:02 »
Пантер, спасибо.
То есть, как я понял, он создается на главном виджете? Если так, то как сделать что бы они отражались как отдельные. Задача в следующем, создать многооконное приложение, при уничтожении главного виджета должны умереть все остальные(что-то наподобие GIMP'a). Или в данной ситуации возможно только отлавливание сигналов?
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Создания виджета
«
Ответ #8 :
Февраль 16, 2011, 18:02 »
ruzik, к чему этот пример? Я как понял, человек хочет расположить один виджет на другом.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Создания виджета
«
Ответ #9 :
Февраль 16, 2011, 18:03 »
QWidget* commandWidget = new QWidget(
&mainWidget
);
Ты назначаешь родителя.
QWidget* commandWidget = new QWidget(
0
);
Тут не указываешь родителя, так что виджет отобразится отдельно.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vanix
Гость
Re: Создания виджета
«
Ответ #10 :
Февраль 16, 2011, 18:05 »
ну я уже понял, что если не указывать родителя, то все нормально, но преимущество задания родителя в том, что когда умирает родитель умирают и все его потомки.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Создания виджета
«
Ответ #11 :
Февраль 16, 2011, 18:08 »
Тут уж выбирай: или шашечки, или ехать.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vanix
Гость
Re: Создания виджета
«
Ответ #12 :
Февраль 16, 2011, 18:12 »
спасибо всем, ток я не понял при чем тут пример который привел ruzik))
Записан
ruzik
Гость
Re: Создания виджета
«
Ответ #13 :
Февраль 16, 2011, 18:25 »
У тебя выскакивали ошибки
Цитировать
conversion from 'QWidget*' to non-scalar type 'QWidget' requested
То есть ты забыл сделать указатель и инициализировать его
Цитировать
В результате выполнения, я чего то подчиненного виджета не наблюдаю?? Что тут опять не так?
Тут использовал объект, который не отображается
Вот я тебе и скинул пример, в котором это все реализовано, так для справки
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...