Не знаю как описать, вообще сама цель стоит. В окно, которое поделено на 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);
}
Такие дела