Russian Qt Forum
Ноябрь 26, 2024, 08:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Нестандартная форма окон  (Прочитано 6524 раз)
JIesnik
Гость
« : Май 10, 2010, 12:00 »

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

P.S.: Извините, если ошибся форумом.
Записан
KuZ
Гость
« Ответ #1 : Май 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();
}
Записан
spectre71
Гость
« Ответ #2 : Май 10, 2010, 12:26 »

Данный вопрос не имеет ни какого отношения к алгоритмам.
Пренесите в раздел "Пользовательский интерфейс (GUI)" или "Вопросы новичков"
Также ипользуйте поск по форуму!
Записан
JIesnik
Гость
« Ответ #3 : Май 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'
Что я только не делал. Помогите, пожалуйста.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Май 13, 2010, 17:15 »

Код:
    virtual void Window::mousePressEvent(QMouseEvent* pe)

в описании метода класса "Window::" писать не нужно. Некоторые компиляторы будут считать это ошибкой.
Записан
ритт
Гость
« Ответ #5 : Май 15, 2010, 17:13 »

поиск по форуму рулит
Записан
vinnitu
Гость
« Ответ #6 : Август 06, 2010, 16:18 »

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

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

а вот еще такая задача - resize нестандартного окна, т.е. допустим растягивать вертикально, то как это делать правильно?
дело в том что обычно маска задается неизменным битмапом, те. его как-то тоже нужно ресайзить...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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