Идея приложения следующая - создаются DockWidget 4 кнопки, а на Widget согласно нажатиям на кнопку линия чертится в нужную сторону.
При выполнении данного ниже кода появляется список memory map а потом пишется the programm has unexpectadly finished
здесь происходит рисование -
class Widget : public QWidget
{
private:
enum direction{up,down,left,right};
direction curr_direct;
QPainter* painter;
public:
// QPainter *painter;
QPen *pen;
QPoint *curr_point;
Widget(QWidget *parent=0);
void Up();
void Down();
void Left();
void Right();
void paintEvent(QPaintEvent*);
};
Widget::Widget(QWidget *parent):QWidget(parent)
{
painter= new QPainter(this);
pen= new QPen;
pen->setColor(Qt::red);
pen->setWidth(5);
painter->setPen(*pen);
*curr_point= QPoint(0,0);
painter->setPen(*pen);
curr_direct= down;
}
void Widget::Up(){
curr_direct= up;
update();
};
// Down etc. определяются также
void Widget::paintEvent(QPaintEvent*){
switch (curr_direct){
case up:
painter->drawLine(*curr_point,(*curr_point+= QPoint(curr_point->x(),curr_point->y()- 5)));
break;
case down:
painter->drawLine(*curr_point,(*curr_point+= QPoint(curr_point->x(),curr_point->y()+ 5)));
break;
case left:
painter->drawLine(*curr_point,(*curr_point+= QPoint(curr_point->x()+ 5,curr_point->y())));;
break;
case right:
painter->drawLine(*curr_point,(*curr_point+= QPoint(curr_point->x()- 5,curr_point->y())));;
break;
};
};
здесь связывание -
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
class Widget* where2paint;
public:
Ui::MainWindow *ui;
};
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->Up,SIGNAL(Clicked),where2paint,SLOT(pUp()));
connect(ui->Down,SIGNAL(Clicked),where2paint,SLOT(pDown()));
connect(ui->Left,SIGNAL(Clicked),where2paint,SLOT(pLeft()));
connect(ui->Right,SIGNAL(Clicked),where2paint,SLOT(pRight()));
}
Может есть предложения по изменению кода?