Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Qt не могу разобрать отображение виджетов...  (Прочитано 2942 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Шинш

  • Автор темы
  • Гость
(Нажмите, чтобы показать/скрыть)

думал что при создании класса Myclass создастся объект QWidget и в нем QLabel, но создается чтото не то (((

Оффлайн andrew_bye

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 2698
    • Просмотр профиля
Re: Qt не могу разобрать отображение виджетов...
« Ответ #1 : 27 Октября 2012, 23:00:53 »
Что-то мне подсказывает, что нужно добавить
#include <QWidget>
#include <QLabel>

Шинш

  • Автор темы
  • Гость
Re: Qt не могу разобрать отображение виджетов...
« Ответ #2 : 27 Октября 2012, 23:10:14 »
andrew_bye,
они в QtGui входят, как и QApplication.

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5745
  • Все по палатам!
    • Просмотр профиля
Re: Qt не могу разобрать отображение виджетов...
« Ответ #3 : 27 Октября 2012, 23:16:18 »
А что автор увидеть хотел?
Извините, я все еще учусь

Шинш

  • Автор темы
  • Гость
Re: Qt не могу разобрать отображение виджетов...
« Ответ #4 : 27 Октября 2012, 23:48:11 »
SergeyIT,
автор хотел чтобы при создании переменной класса ( Myclass A), создавался виджет и прочее(в частности тут чтобы в виджете была запись).
И при A.show() отрисовывалось именно то, что мы в классе создавали а не какое то левое окно пустое((

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5745
  • Все по палатам!
    • Просмотр профиля
Re: Qt не могу разобрать отображение виджетов...
« Ответ #5 : 27 Октября 2012, 23:59:05 »
А вы указали, как и где это должно отрисовываться?
Извините, я все еще учусь

Шинш

  • Автор темы
  • Гость
Re: Qt не могу разобрать отображение виджетов...
« Ответ #6 : 28 Октября 2012, 13:00:02 »
SergeyIT,
думал что да, создаваться окно в конструкторе, отображаться в главной ф-и, что я сделал не так?

Оффлайн Gekko

  • Участник
  • *
  • Сообщений: 222
    • Просмотр профиля
Re: Qt не могу разобрать отображение виджетов...
« Ответ #7 : 28 Октября 2012, 15:10:53 »
#include <QtGui/QApplication>

#include <QtGui>

class MyClass:public QDialog
{
public:
    MyClass();
};

MyClass::MyClass() : QDialog()
{
    //QWidget *wgt = new QWidget;

    QLabel *lbl = new QLabel("Hello");

    lbl->show();

    //lbl->setText("Hello");

}

int main(int argc, char **argv)
{
    QApplication app(argc,argv);

    MyClass A;
    //A.show();

    return app.exec();
}


Пользователь решил продолжить мысль 28 Октября 2012, 15:22:15:
Виджет не нужен или же нужно использовать Layout и он передаст из лейблы в виджет указатель на родительство.

Пользователь решил продолжить мысль 28 Октября 2012, 15:35:26:
Т.е. получается что-то примерно такое:

#include <QtGui>

class MyClass:public QDialog
{
public:
    MyClass();
};

MyClass::MyClass() : QDialog()
{
    QWidget *wgt = new QWidget;

    QLabel *lbl = new QLabel("Hello");

    QHBoxLayout* phbxLayout = new QHBoxLayout;

    phbxLayout->setMargin(5);
    phbxLayout->setSpacing(15);
    phbxLayout->addWidget(lbl);

    wgt->setLayout(phbxLayout);

    //lbl->setText("Hello");

    //lbl->show();

    wgt->show();

}

int main(int argc, char **argv)
{
    QApplication app(argc,argv);

    MyClass A;
    //A.show();

    return app.exec();
}

« Последнее редактирование: 28 Октября 2012, 15:35:26 от Gekko »
Xubuntu 12.04 LTS с Xfce 4.10

Шинш

  • Автор темы
  • Гость
Re: Qt не могу разобрать отображение виджетов...
« Ответ #8 : 28 Октября 2012, 17:56:44 »
Gekko,
спасибо)))

а если мне нужно ожидание ответа от виджета и только потом продолжение работы? при этом мне абсолютно пофиг что ф-я вернет сигналом, ибо при "отмена" сразу завершение...

if( open->exec() )
как то мало нравится, и почему то если это вставляю происходит отрисовка какого то окна :(

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 755
    • Просмотр профиля
Re: Qt не могу разобрать отображение виджетов...
« Ответ #9 : 29 Октября 2012, 11:20:26 »
Потому что не надо внутри QDialog создавать другой виджет. QDialog - это уже виджет, работайте с ним.

Шинш

  • Автор темы
  • Гость
Re: Qt не могу разобрать отображение виджетов...
« Ответ #10 : 29 Октября 2012, 16:16:10 »
aSmile,
спасибо ))

#include <QtGui>

class MyClass:public QDialog
{
public:
    MyClass();
};

MyClass::MyClass() : QDialog()
{
    QLabel *lbl= new QLabel("Hello");

    QHBoxLayout* phbxLayout = new QHBoxLayout;

    phbxLayout->setMargin(5);
    phbxLayout->setSpacing(15);
    phbxLayout->addWidget(lbl);

    this->setLayout(phbxLayout);
}

int main(int argc, char **argv)
{
    QApplication app(argc,argv);

    MyClass A;
    A.show();

    return app.exec();
}


тоесть при наследовании от QDialog и QWidget this это уже созданное автоматически окно от этих классов?

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5745
  • Все по палатам!
    • Просмотр профиля
Извините, я все еще учусь

Шинш

  • Автор темы
  • Гость
Re: Qt не могу разобрать отображение виджетов...
« Ответ #12 : 29 Октября 2012, 16:51:02 »
SergeyIT,
я в контексте QWidget и QDialog )

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5745
  • Все по палатам!
    • Просмотр профиля
Re: Qt не могу разобрать отображение виджетов...
« Ответ #13 : 29 Октября 2012, 17:03:56 »
Шинш,
this имеет смысл в контексте объекта класса, независимо что это за класс.
В твоем случае this - это указатель на экземпляр класса MyClass
http://cyberguru.ru/cpp/cpp-velvet-way2-page15.html
Извините, я все еще учусь

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 755
    • Просмотр профиля
Re: Qt не могу разобрать отображение виджетов...
« Ответ #14 : 29 Октября 2012, 18:23:18 »
QDialog наследуется от QWidget'а.

 

Страница сгенерирована за 0.018 секунд. Запросов: 22.