crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Шуточный пример
Litkevich Yuriy
  опции профиля:
сообщение 12.4.2009, 14:17
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Тут написал шуточный примерчик, но может оказатся поучительным для новичков:
Раскрывающийся текст
#include <QApplication>
#include <QMainWindow>
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>


class MyButton : public QPushButton
{
Q_OBJECT
public:
    MyButton(QWidget *parent = 0);
public slots:
    void slotSetParent(bool checked);

private:
    QWidget *parent;

};

MyButton::MyButton(QWidget *p)
    : QPushButton(0)
{
    parent = p;
    setCheckable(true);
    setText("Click");
    connect(this, SIGNAL(clicked(bool)), this, SLOT(slotSetParent(bool)));
}

void MyButton::slotSetParent(bool checked)
{
    if (checked)
    {
        setParent(parent);
        parent->layout()->addWidget(this);
    }
    else
    {
        setParent(0);
        show();
    }
};

// нужнен после объявления класса, т.к. и объявление и реализация класса в одном файле.
#include "main.moc"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    
    QVBoxLayout    *lay = new QVBoxLayout();

    QWidget wgt;
    wgt.resize(150, 70);
    wgt.setLayout(lay);
    wgt.show();
    
    MyButton *btn = new MyButton(&wgt);
    btn->show();

    return app.exec();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 12.4.2009, 23:17
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(SABROG @ 13.4.2009, 3:00) *
Чем-то напоминает QDockWidget, только тут докинг окна при нажатии на кнопку происходит.
вполне возможно, что он примерно так и работает. Потому, наверное, в QMainWindow предусмотрены специальные места для парковки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.11.2024, 2:14