Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Title Bar, Изменение внешнего вида 
:(
    Опции темы
kojot
Дата 28.11.2009, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 17.2.2007

Репутация: нет
Всего: нет



Всем привет.

Возник вопрос: как можно изменить внешний вид Tiltle Bar главного окна (сменить фон, вместо стандартных кнопок close, minimize установить свои и т.д.)? Пробовал гуглить - ничего не нашёл.

Заранее спасибо.
PM MAIL   Вверх
BobiKK
Дата 28.11.2009, 03:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 655
Регистрация: 1.12.2005
Где: Essen, Deutschlan d

Репутация: нет
Всего: 16



Отрисовка заголовка производится не библиотекой Qt, а средствами API платформы. Поэтому чтобы изменить заголовок, надо его сначала реализовать. Найденный ример:
Код

#include <QtGui>



class TitleBar : public QWidget {

    Q_OBJECT

public:

    TitleBar(QWidget *parent);

public slots:

    void showSmall();

    void showMaxRestore();

protected:

    void mousePressEvent(QMouseEvent *me);

    void mouseMoveEvent(QMouseEvent *me);

private:

    QToolButton *minimize;

    QToolButton *maximize;

    QToolButton *close;

    QPixmap restorePix, maxPix;

    bool maxNormal;

    QPoint startPos;

    QPoint clickPos;

};



class Frame : public QFrame {

public:

    Frame();    

    QWidget *contentWidget() const;

    TitleBar *titleBar() const;

    void mousePressEvent(QMouseEvent *e);

    void mouseMoveEvent(QMouseEvent *e);

    void mouseReleaseEvent(QMouseEvent *);

private:

    TitleBar *m_titleBar;

    QWidget *m_content;

    QPoint m_old_pos;

    bool m_mouse_down;

    bool left, right, bottom;

};




Код

#include "titlebar.h"

    

TitleBar::TitleBar(QWidget *parent) {

    setAutoFillBackground(true);

    setBackgroundRole(QPalette::Highlight);

    minimize = new QToolButton(this);

    maximize = new QToolButton(this);

    close = new QToolButton(this);

    

    QPixmap pix = style()->standardPixmap(QStyle::SP_TitleBarCloseButton);

    close->setIcon(pix);

 

    maxPix = style()->standardPixmap(QStyle::SP_TitleBarMaxButton);

    maximize->setIcon(maxPix);

    

    pix = style()->standardPixmap(QStyle::SP_TitleBarMinButton);

    minimize->setIcon(pix);



    restorePix = style()->standardPixmap(QStyle::SP_TitleBarNormalButton);

    

    minimize->setMinimumHeight(20);

    close->setMinimumHeight(20);

    maximize->setMinimumHeight(20);

    

    QLabel *label = new QLabel(this);

    label->setText("Window Title");

    parent->setWindowTitle("Window Title");

    

    QHBoxLayout *hbox = new QHBoxLayout(this);

    

    hbox->addWidget(label);

    hbox->addWidget(minimize);

    hbox->addWidget(maximize);

    hbox->addWidget(close);

    

    hbox->insertStretch(1, 500);

    hbox->setSpacing(0);

    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);

    

    maxNormal = false;

    

    connect(close, SIGNAL( clicked() ), parent, SLOT(close() ) );

    connect(minimize, SIGNAL( clicked() ), this, SLOT(showSmall() ) );

    connect(maximize, SIGNAL( clicked() ), this, SLOT(showMaxRestore() ) );

}



void TitleBar::showSmall() {

    parentWidget()->showMinimized();

}



void TitleBar::showMaxRestore() {

    if (maxNormal) {

        parentWidget()->showNormal();

        maxNormal = !maxNormal;

        maximize->setIcon(maxPix);

    } else {

        parentWidget()->showMaximized();

        maxNormal = !maxNormal;

        maximize->setIcon(restorePix);

    }

}



void TitleBar::mousePressEvent(QMouseEvent *me) {

    startPos = me->globalPos();

    clickPos = mapToParent(me->pos());

}



void TitleBar::mouseMoveEvent(QMouseEvent *me) {

    if (maxNormal)

        return;

    parentWidget()->move(me->globalPos() - clickPos);

}



//----------------------------------------------

Frame::Frame() {

    m_mouse_down = false;

    setFrameShape(Panel);

        

    setWindowFlags(Qt::FramelessWindowHint);

    setMouseTracking(true);



    m_titleBar = new TitleBar(this);

    m_content = new QWidget(this);

        

    QVBoxLayout *vbox = new QVBoxLayout(this);

    vbox->addWidget(m_titleBar);

    vbox->setMargin(0);

    vbox->setSpacing(0);

        

    QVBoxLayout *layout = new QVBoxLayout(this);

    layout->addWidget(m_content);

    layout->setMargin(5);

    layout->setSpacing(0);

    vbox->addLayout(layout);

}

    

QWidget *Frame::contentWidget() const {

    return m_content; 

}



TitleBar *Frame::titleBar() const { 

    return m_titleBar; 

}



void Frame::mousePressEvent(QMouseEvent *e) {

    m_old_pos = e->pos();

    m_mouse_down = e->button() == Qt::LeftButton;

}



void Frame::mouseMoveEvent(QMouseEvent *e) {

    int x = e->x();

    int y = e->y();

    

    if (m_mouse_down) {

        int dx = x - m_old_pos.x();

        int dy = y - m_old_pos.y();

        

        QRect g = geometry();

        

        if (left)

            g.setLeft(g.left() + dx);

        if (right)

            g.setRight(g.right() + dx);

        if (bottom)

            g.setBottom(g.bottom() + dy);

    

        setGeometry(g);

        m_old_pos = QPoint(!left ? e->x() : m_old_pos.x(), e->y());

    } else {

        QRect r = rect();

        left = qAbs(x - r.left()) <= 5;

        right = qAbs(x - r.right()) <= 5;

        bottom = qAbs(y - r.bottom()) <= 5;

        bool hor = left | right;

    

        if (hor && bottom) {

            if (left)

                setCursor(Qt::SizeBDiagCursor);

            else 

                setCursor(Qt::SizeFDiagCursor);

        } else if (hor) {

                setCursor(Qt::SizeHorCursor);

        } else if (bottom) {

                setCursor(Qt::SizeVerCursor);

        } else {

                setCursor(Qt::ArrowCursor);

        }

    }

}



void Frame::mouseReleaseEvent(QMouseEvent * ) {

    m_mouse_down = false;

}



int main(int argc, char **argv){

    QApplication app(argc, argv);

    

    Frame win;

    win.move(0,0);

    

    QVBoxLayout *lay = new QVBoxLayout(win.contentWidget());

    lay->setMargin(0);

    QTextEdit *edit = new QTextEdit(win.contentWidget());

    lay->addWidget(edit);

    

    win.show();

    return app.exec();    

}



PM MAIL   Вверх
andrew_121
Дата 28.11.2009, 04:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Цитата(kojot @  28.11.2009,  03:33 Найти цитируемый пост)
Tiltle Bar

Это шапка окна чтоли?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
kojot
Дата 28.11.2009, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 17.2.2007

Репутация: нет
Всего: нет



Цитата(andrew_121 @ 28.11.2009,  04:38)
Цитата(kojot @  28.11.2009,  03:33 Найти цитируемый пост)
Tiltle Bar

Это шапка окна чтоли?

Да

user posted image


PM MAIL   Вверх
andrew_121
Дата 28.11.2009, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



kojot, Код BobiKK-а пробовал собрать? Работает? Покажи что получилось.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
kojot
Дата 28.11.2009, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 17.2.2007

Репутация: нет
Всего: нет



Цитата(andrew_121 @ 28.11.2009,  11:31)
kojot, Код BobiKK-а пробовал собрать? Работает? Покажи что получилось.

Да, собрал.

user posted image

Сейчас пытаюсь разобраться. Хочу прикрутить к фрейму простое Gui приложение, которое создаётся в QtCreator'е. Да и ширина TitleBar уж больно какая-то широкая. Как разберусь - отрапортую.
PM MAIL   Вверх
andrew_121
Дата 28.11.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



kojot, Если есть желание, создай репозиторий на гугле-код, меня этот вопрос давненько интересует. Поучавствуем в разработке на пару. Глядишь, и что-то достойное внимания получится ;)


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
kojot
Дата 1.12.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 17.2.2007

Репутация: нет
Всего: нет



Вот то, что у меня получилось. В центре обычное Gui приложение, сделанное в Qt Creator'е(MenuBar, centralWidget, StatusBar).

user posted image

Кому интересно, код ниже.

Это сообщение отредактировал(а) kojot - 1.12.2009, 11:54
PM MAIL   Вверх
kojot
Дата 1.12.2009, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 17.2.2007

Репутация: нет
Всего: нет



titlebar.h
Код

#ifndef TITLEBAR_H
#define TITLEBAR_H

#include <QToolButton>
#include <QLayout>
#include <QStyle>
#include <QLabel>
#include <QMouseEvent>
#include <QPushButton>

class TitleBar : public QWidget
{
    Q_OBJECT

public:
    TitleBar(QWidget *parent);
    QLabel *label;

public slots:
    void showSmall();
    void showMaxRestore();

protected:
    void mousePressEvent(QMouseEvent *me);
    void mouseMoveEvent(QMouseEvent *me);

private:
    QPushButton *minimize;
    QPushButton *maximize;
    QPushButton *close;
    QPixmap restorePix, maxPix;
    bool maxNormal;
    QPoint startPos;
    QPoint clickPos;
};

#endif // TITLEBAR_H


titlebar.cpp
Код

#include "titlebar.h"

TitleBar::TitleBar(QWidget *parent){
    // Don't let this widget inherit the parent's background color
    setAutoFillBackground(true);
    // Use a brush with a Highlight color role to render the background
    setBackgroundRole(QPalette::Highlight);

    minimize = new QPushButton(this);
    maximize = new QPushButton(this);
    QLabel *space=new QLabel("");
    space->setFixedWidth(5);
    close= new QPushButton(this);

    // Use the style to set the button pixmaps

    QPixmap pix;
    pix.load(":/image/close.png");
    close->setIcon(pix);
    close->setIconSize(QSize(42, 17));


    maxPix.load(":/image/maximize.png");
    maximize->setIcon(maxPix);
    maximize->setIconSize(QSize(24, 17));

    pix.load(":/image/minimize.png");
    minimize->setIcon(pix);
    minimize->setIconSize(QSize(24, 17));

    restorePix.load(":/image/restore.png");

    minimize->setFixedSize(24, 17);
    close->setFixedSize(42, 17);
    maximize->setFixedSize(24, 17);

    label = new QLabel(this);
    label->setText("Window Title");
    parent->setWindowTitle("Window Title");

    QHBoxLayout *hbox = new QHBoxLayout(this);

    hbox->addWidget(label);
    hbox->addWidget(minimize);
    hbox->addWidget(maximize);
    hbox->addWidget(space);
    hbox->addWidget(close);
    hbox->setContentsMargins(2,2,2,2);

    hbox->insertStretch(1, 500);
    hbox->setSpacing(0);
    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);

    maxNormal = false;

    connect(close, SIGNAL( clicked() ), parent, SLOT(close() ) );
    connect(minimize, SIGNAL( clicked() ), this, SLOT(showSmall() ) );
    connect(maximize, SIGNAL( clicked() ), this, SLOT(showMaxRestore() ) );
}

void TitleBar::showSmall(){
    parentWidget()->showMinimized();
}

void TitleBar::showMaxRestore(){
    if (maxNormal){
        parentWidget()->showNormal();
        maxNormal = !maxNormal;
        maximize->setIcon(maxPix);
    }else{
        parentWidget()->showMaximized();
        maxNormal = !maxNormal;
        maximize->setIcon(restorePix);
    }
}

void TitleBar::mousePressEvent(QMouseEvent *me){
    startPos = me->globalPos();
    clickPos = mapToParent(me->pos());
}

void TitleBar::mouseMoveEvent(QMouseEvent *me){
    if (maxNormal)
        return;
    parentWidget()->move(me->globalPos() - clickPos);
}


frame.h
Код

#ifndef FRAME_H
#define FRAME_H

#include <QFrame>
#include <QPoint>
#include <QMouseEvent>
#include <QMainWindow>

#include "titlebar.h"

class Frame : public QFrame
{
public:
    Frame(QMainWindow &win);
    QWidget *contentWidget() const;
    TitleBar *titleBar() const;
    void mousePressEvent(QMouseEvent *e);
    void mouseMoveEvent(QMouseEvent *e);
    void mouseReleaseEvent(QMouseEvent *e);
    TitleBar *m_titleBar;

private:
    QWidget *m_content;
    QPoint m_old_pos;
    bool m_mouse_down;
    bool left, right, bottom;
};

#endif // FRAME_H


frame.cpp
Код

#include "frame.h"
#include "mainwindow.h"
#include "ui_mainwindow.h"

Frame::Frame(QMainWindow &win)
{
    m_mouse_down = false;
    setFrameShape(Panel);

    // Make this a borderless window which can't
    // be resized or moved via the window system
    setWindowFlags(Qt::FramelessWindowHint);
    this->setMouseTracking(true);

    m_titleBar = new TitleBar(this);

    m_content = win.centralWidget();

    QVBoxLayout *vbox = new QVBoxLayout(this);
    vbox->addWidget(m_titleBar);
    vbox->setMargin(0);
    vbox->setSpacing(0);

    QVBoxLayout *layout = new QVBoxLayout(this);
    win.menuBar()->setFixedHeight(19);
    layout->addWidget(win.menuBar());
    layout->addWidget(win.centralWidget());
    win.statusBar()->setFixedHeight(19);
    layout->addWidget(win.statusBar());
    layout->setMargin(0);
    layout->setSpacing(0);
    vbox->addLayout(layout);
}

// Allows you to access the content area of the frame
// where widgets and layouts can be added
QWidget *Frame::contentWidget() const{
    return m_content;
}

TitleBar *Frame::titleBar() const{
    return m_titleBar;
}


void Frame::mousePressEvent(QMouseEvent *e){
    m_old_pos = e->pos();
    m_mouse_down = e->button() == Qt::LeftButton;
}

void Frame::mouseMoveEvent(QMouseEvent *e){

    int x = e->x();
    int y = e->y();

    if (m_mouse_down){
        int dx = x - m_old_pos.x();
        int dy = y - m_old_pos.y();

        QRect g = geometry();

        if (left)
            g.setLeft(g.left() + dx);
        if (right)
            g.setRight(g.right() + dx);
        if (bottom)
            g.setBottom(g.bottom() + dy);

        setGeometry(g);

        m_old_pos = QPoint(!left ? e->x() : m_old_pos.x(), e->y());
    }else{
        QRect r = rect();
        left = qAbs(x - r.left()) <= 5;
        right = qAbs(x - r.right()) <= 5;
        bottom = qAbs(y - r.bottom()) <= 5;
        bool hor = left | right;

        if (hor && bottom){
            if (left)
                setCursor(Qt::SizeBDiagCursor);
            else
                setCursor(Qt::SizeFDiagCursor);
        }else if (hor){
                setCursor(Qt::SizeHorCursor);
            }else if (bottom){
                setCursor(Qt::SizeVerCursor);
            }else{
                setCursor(Qt::ArrowCursor);
            }
        }
}

void Frame::mouseReleaseEvent(QMouseEvent *e){
    m_mouse_down = false;
}


mainwindow.h
Код

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>
#include "titlebar.h"
#include "frame.h"

#include <QApplication>
#include <QtGui>
#include <QLayout>
#include <QStyle>
#include <QVBoxLayout>


namespace Ui
{
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H


mainwindow.cpp
Код

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{

    ui->setupUi(this);

}

MainWindow::~MainWindow()
{
    delete ui;
}


main.cpp
Код

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QLabel>

int main(int argc, char **argv)
{

    QApplication a(argc, argv);

    MainWindow w;
    Frame box(w);
    box.move(100,50);
    box.m_titleBar->label->setText("My Window Title");

    box.resize(w.width(), w.height()+10);
    box.show();
    return a.exec();
}


res.qrc
Код

<RCC>
    <qresource prefix="/image" >
        <file>restore.png</file>
        <file>close.png</file>
        <file>maximize.png</file>
        <file>minimize.png</file>
    </qresource>
</RCC>


Это сообщение отредактировал(а) kojot - 1.12.2009, 12:26
PM MAIL   Вверх
kojot
Дата 1.12.2009, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 17.2.2007

Репутация: нет
Всего: нет



P.S.: 

 setMouseTracking(true) - ставил галочку в свойствах формы в Qt Creator'е
 если прописать setMouseTracking(true) в конструкторе - работать не будет

Сам не знаю почему.

Это сообщение отредактировал(а) kojot - 1.12.2009, 12:24
PM MAIL   Вверх
boostcoder
Дата 14.4.2010, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 4
Всего: 110



при использовании кода, выявилась недоделка.
требуется сделать чтоб отрабатывалось событие "mouseMoveEvent()" на центральном виджете(только при использовании QMainWindow)

в конструктор класса Frame, требуется изменить следующим образом:
Код

Frame::Frame(QMainWindow &win) {
   m_mouse_down = false;
   setFrameShape(Panel);
   // Make this a borderless window which can't
   // be resized or moved via the window system
   setWindowFlags(Qt::FramelessWindowHint);
   this->setMouseTracking(true);
   m_titleBar = new TitleBar(this);
   m_content = win.centralWidget();
   m_content->setMouseTracking(true); // <<<<<<<<<<<<<<<<<
   QVBoxLayout *vbox = new QVBoxLayout(this);
   vbox->addWidget(m_titleBar);
   vbox->setMargin(0);
   vbox->setSpacing(0);
   QVBoxLayout *layout = new QVBoxLayout(this);
   win.menuBar()->setFixedHeight(19);
   layout->addWidget(win.menuBar());
   layout->addWidget(win.centralWidget());
   win.statusBar()->setFixedHeight(19);
   layout->addWidget(win.statusBar());
   layout->setMargin(0);
   layout->setSpacing(0);
   vbox->addLayout(layout);
}

PM WWW   Вверх
boostcoder
Дата 14.4.2010, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 4
Всего: 110



в общем, отредактировал код, поудалял все операторы new.
архив с проектом прилагаю.


Присоединённый файл ( Кол-во скачиваний: 130 )
Присоединённый файл  titlebar_test.zip 5,02 Kb
PM WWW   Вверх
MasterYoda
Дата 12.8.2010, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.8.2010

Репутация: нет
Всего: нет



Я так понял (посмотрел - подёргал), что получилось окно без рамки, соответственно без тем всяческих и всего такого? В некоторых случаях, конечно, прокатит, но как-то не то всё это  smile ... Как докопаться до стандартного заголовка, мыслей нет? Меню там изменить, ... Qt что-то такое как-то предоставляет или только через API (кроссплатформенность тогда, так понимаю, идёт лесом)?

И ещё вопрос к тем, кто со всем этим хоть как-то разбирался... А как впринципе узнать высоту заголовка окна? Допустим, мне хочется при запуске приложения передвинуть окошко в правый верхний угол. Если просто переместить в точку (xxx, 0), заголовок улетит за экран. Тоже только API?

И ещё вдогонку  smile ... Как запретить у главного окна изменение размеров?
PM MAIL   Вверх
SABROG
Дата 13.8.2010, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(MasterYoda @  12.8.2010,  18:37 Найти цитируемый пост)
И ещё вдогонку  smile ... Как запретить у главного окна изменение размеров? 

QWidget::setFixedSize()


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
MasterYoda
Дата 16.8.2010, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.8.2010

Репутация: нет
Всего: нет



Цитата(SABROG @ 13.8.2010,  00:41)
Цитата(MasterYoda @  12.8.2010,  18:37 Найти цитируемый пост)
И ещё вдогонку  smile ... Как запретить у главного окна изменение размеров? 

QWidget::setFixedSize()

Спасибо большое.

Так что, про высоту заголовка мыслей ни у кого нет?

Это сообщение отредактировал(а) MasterYoda - 16.8.2010, 12:38
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1125 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.