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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отрисовка в виджете  (Прочитано 2921 раз)
k2rush
Гость
« : Май 01, 2012, 19:56 »

Не знаю как описать, вообще сама цель стоит. В окно, которое поделено на 2 части, слева находится пользовательский интерфейс, кнопочки и тумблеры, справа у нас должна быть карта, с фокусом(прямоугольник, который ползает по карте). Всё в принципе сделал, но в двух разных проектах, а когда попытался объеденить то столкнулся с проблемами, которые даже понять не могу.
Было несколько вариантов прорисовки, и просто в пэйнтИвенте и в пикс мапе, но всегда какие то ошибки.
Приведу несколько строк кода, которые могут иметь отношение(но я не уверен)
ошибки в данной реализации:
e:\Qt\Desktop\Qt\4.7.4\mingw\include\QtGui\qwidget.h:787: ошибка: 'QWidget& QWidget::operator=(const QWidget&)' is private
D:\Study\book\MenuGen\qpaintwidget.h:9: ошибка: within this context
D:\Study\book\MenuGen\MainMenu.cpp:16: synthesized method 'QPaintWidget& QPaintWidget::operator=(const QPaintWidget&)' first required here

mainmenu.h
Код:
#include <QMainWindow>
#include "qpaintwidget.h"
#include "ui_form.h"
#include "ui_NFSForm.h"
#include "ui_WorkForm.h"

class QAction;
class QLabel;
class QMenu;

class MainMenu : public QMainWindow
{
    Q_OBJECT

public:
    MainMenu(QWidget *parent = 0);
    QWidget *widget;       //главное окно
    QWidget *wgt;          //виджет исходных данных
    QWidget *NFSFormwgt;   //виджет НФС
    QWidget *WorkFormwgt;  //виджет хз чего
    Ui::WorkForm ui2;      //Форма хз чего
    Ui::NFSForm ui1;       //форма НФС
    Ui::Form ui;           //Форма исходных данных
    QPaintWidget w;

qpaintwidget.h
Код:
#include <QWidget>

class QPaintEvent;

class QPaintWidget : public QWidget
{
    Q_OBJECT
public:
    QPaintWidget(QWidget * parent = 0);
    int a[4];
    void changeDirUp();
    void changeDirDown();
    void changeDirUpFast();
    void changeDirDownFast();
    void changeSizeUp();
    void changeSizeDown();
protected:
    void paintEvent(QPaintEvent *p);
    void keyPressEvent(QKeyEvent *KPE);

qpaintwidget.cpp
Код:
QPaintWidget::QPaintWidget(QWidget * parent) : QWidget(parent)
{
    setPalette(QPalette(QColor(123, 135,126)));
    a[0] =10;
    a[1] =10;
    a[2] =110;
    a[3] =110;
}

void QPaintWidget::paintEvent(QPaintEvent *) {

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.setPen(QPen(Qt::black, 4));
    painter.drawRect(QRect(a[0], a[1], a[2], a[3]));
    painter.drawText(200,200, QString::number(a[0]));

}

MainMenu.cpp
Код:
MainMenu::MainMenu(QWidget *parent)
    :QMainWindow(parent)
{     
    QTextCodec::setCodecForTr(QTextCodec::codecForName("System"));

    widget = new QWidget;
    setCentralWidget(widget);

    w = new QPaintWidget;


    wgt = new QWidget;
    ui.setupUi(wgt);
    wgt->hide();
    wgt->setParent(widget);


    NFSFormwgt = new QWidget;
    ui1.setupUi(NFSFormwgt);
    NFSFormwgt->hide();
    NFSFormwgt->setParent(widget);

    WorkFormwgt = new QWidget;
    ui2.setupUi(WorkFormwgt);
    WorkFormwgt->hide();
    WorkFormwgt->setParent(widget);

    createActions();
    createMenus();
    createToolBars();


    QString message = tr("");
    statusBar()->showMessage(message);

    setWindowTitle(tr("Menus"));
    setMinimumSize(480, 320);
    resize(1200, 800);

}


Такие дела Непонимающий
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Май 01, 2012, 20:34 »

Цитировать
QPaintWidget w;
MainMenu::w не объявлен как указатель.
Записан

Qt 5.11/4.8.7 (X11/Win)
k2rush
Гость
« Ответ #2 : Май 01, 2012, 22:29 »

Работает...
Не могу поверить, я такое дно =(
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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