Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: JIesnik от Май 10, 2010, 12:00



Название: Нестандартная форма окон
Отправлено: JIesnik от Май 10, 2010, 12:00
Здравствуйте. Я новичок в Qt и вообще в C++. Имеется следующий вопрос: нужен алгоритм изменения формы окна по внешнему битмапу (в зависимости от выбранного скина приложения). Видел некоторые алгоритмы. Но как из адаптировать по Qt не знаю. Помогите и объясните, пожалуйста.
Ссылки на алгоритмы для Си:
http://www.sources.ru/cpp/faqs/43.htm
http://cppbuilder.ru/articles/0033.php

P.S.: Извините, если ошибся форумом.


Название: Re: Нестандартная форма окон
Отправлено: KuZ от Май 10, 2010, 12:21
вот пример из книги Макс Шлее "..." :

Код:
/* ======================================================================
**  main.cpp
** ======================================================================
**
** ======================================================================
**  Copyright (c) 2007 by Max Schlee
** ======================================================================
*/

#include <QtGui>

// ======================================================================
class Window : public QLabel {
private:
    QPoint  m_ptPosition;

protected:
    virtual void Window::mousePressEvent(QMouseEvent* pe)
    {
        m_ptPosition = pe->pos();
    }

    virtual void Window::mouseMoveEvent(QMouseEvent* pe)
    {
        move(pe->globalPos() - m_ptPosition);
    }

public:
    Window(QWidget* pwgt = 0)
        : QLabel(pwgt,  Qt::FramelessWindowHint | Qt::Window)
    {
    }
};

// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    Window       win;
    QPixmap      pix(":/images/unixoids.png");

    win.setPixmap(pix);
    win.setMask(pix.mask());
    win.show();

    return app.exec();
}


Название: Re: Нестандартная форма окон
Отправлено: spectre71 от Май 10, 2010, 12:26
Данный вопрос не имеет ни какого отношения к алгоритмам.
Пренесите в раздел "Пользовательский интерфейс (GUI)" или "Вопросы новичков"
Также ипользуйте поск по форуму!


Название: Re: Нестандартная форма окон
Отправлено: JIesnik от Май 13, 2010, 15:40
вот пример из книги Макс Шлее "..." :

Код:
/* ======================================================================
**  main.cpp
** ======================================================================
**
** ======================================================================
**  Copyright (c) 2007 by Max Schlee
** ======================================================================
*/

#include <QtGui>

// ======================================================================
class Window : public QLabel {
private:
    QPoint  m_ptPosition;

protected:
    virtual void Window::mousePressEvent(QMouseEvent* pe)
    {
        m_ptPosition = pe->pos();
    }

    virtual void Window::mouseMoveEvent(QMouseEvent* pe)
    {
        move(pe->globalPos() - m_ptPosition);
    }

public:
    Window(QWidget* pwgt = 0)
        : QLabel(pwgt,  Qt::FramelessWindowHint | Qt::Window)
    {
    }
};

// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    Window       win;
    QPixmap      pix(":/images/unixoids.png");

    win.setPixmap(pix);
    win.setMask(pix.mask());
    win.show();

    return app.exec();
}
Спасибо, но у меня всё равно какая-то проблема с перетаскиванием:
всегда вводит ошибки:
Цитировать
error: extra qualification 'Window::' on member 'mousePressEvent'
и
Цитировать
error: extra qualification 'Window::' on member 'mouseMoveEvent'
Что я только не делал. Помогите, пожалуйста.


Название: Re: Нестандартная форма окон
Отправлено: Alex Custov от Май 13, 2010, 17:15
Код:
    virtual void Window::mousePressEvent(QMouseEvent* pe)

в описании метода класса "Window::" писать не нужно. Некоторые компиляторы будут считать это ошибкой.


Название: Re: Нестандартная форма окон
Отправлено: ритт от Май 15, 2010, 17:13
поиск по форуму рулит


Название: Re: Нестандартная форма окон
Отправлено: vinnitu от Август 06, 2010, 16:18
Здравствуйте. Я новичок в Qt и вообще в C++. Имеется следующий вопрос: нужен алгоритм изменения формы окна по внешнему битмапу (в зависимости от выбранного скина приложения). Видел некоторые алгоритмы. Но как из адаптировать по Qt не знаю. Помогите и объясните, пожалуйста.
Ссылки на алгоритмы для Си:
http://www.sources.ru/cpp/faqs/43.htm
http://cppbuilder.ru/articles/0033.php

P.S.: Извините, если ошибся форумом.

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