Hi,
I tried all the way you have said.
I'm getting correct value only if I gave values directly. (ie If I took value from a text field and assigned to an integer, then its giving wrong values for qCos and qSin).
But if I print the value which I red from text filed using qDebug(), it'll get correct value.
The same code I tried in PC. Its working fine.
I'll add the program below which I hav done.
main.cpp
#include <QApplication>
#include "dialog.h"
int main(int argc, char *argv[])
{
Dialog dialog;
dialog.setMinimumHeight(725);
dialog.setMinimumWidth(1000);
dialog.showMaximized();
dialog.show();
return app.exec();
}
#include <QApplication>
#include "dialog.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Dialog dialog;
dialog.setMinimumHeight(725);
dialog.setMinimumWidth(1000);
dialog.showMaximized();
dialog.show();
return app.exec();
}
To copy to clipboard, switch view to plain text mode
dialog.cpp
#include <QtDebug>
#include "dialog.h"
Dialog::Dialog()
{
drawCircle =0;
circleRadiusText->setFixedHeight(30);
circleRadiusText->setFixedWidth(130);
submitButton->setFixedWidth(300);
menu_layout->addWidget(circleRadiusText);
menu_layout->addWidget(submitButton);
setLayout(menu_layout);
QObject::connect(submitButton,
SIGNAL(clicked
()),
this,
SLOT(draw_Circle
()));
}
void Dialog::draw_Circle()
{
angle = circleRadiusText->toPlainText().toInt();
drawCircle =1;
update();
}
#include <QtDebug>
#include "dialog.h"
Dialog::Dialog()
{
drawCircle =0;
main_widget = new QWidget;
menu_layout = new QVBoxLayout;
circleRadiusText =new QTextEdit("");
circleRadiusText->setFixedHeight(30);
circleRadiusText->setFixedWidth(130);
QPushButton *submitButton = new QPushButton("OK");
submitButton->setFixedWidth(300);
menu_layout->addWidget(circleRadiusText);
menu_layout->addWidget(submitButton);
setLayout(menu_layout);
QObject::connect(submitButton, SIGNAL(clicked()),this, SLOT(draw_Circle()));
}
void Dialog::draw_Circle()
{
angle = circleRadiusText->toPlainText().toInt();
drawCircle =1;
update();
}
To copy to clipboard, switch view to plain text mode
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <stdlib.h>
#include <math.h>
#include <cmath>
#include <iostream>
#include <stdio.h>
QT_BEGIN_NAMESPACE
#include <QMainWindow>
#include <QTextEdit>
#include <QString>
#include <QtGui>
#include <QPushButton>
#include <QWidget>
#include <QBoxLayout>
#include <QPainter>
#include <QPaintEvent>
#include <QKeyEvent>
#include <QGraphicsView>
#include <qmath.h>
QT_END_NAMESPACE
{
Q_OBJECT
public:
Dialog();
private slots:
void draw_Circle();
{
if(event->key() == Qt::Key_Q)
{
qApp->exit();
}
}
{
Painter.
setRenderHint(QPainter::Antialiasing,
true) ;
if (drawCircle ==1)
{
int x1,y1,x2,y2;
x1 =100;
y1 = 100;
x2 = 400;
y2 = 400;
int midx = 300;
int midy = 300;
int radius = 200;
angle1 = 100;
qDebug()<< angle;
qDebug()<< angle1;
Painter.
setBrush(QColor(Qt
::white));
Painter.drawEllipse(x1,y1,x2,y2);
Painter.drawLine(midx, midy, midx+radius, midy);
Painter.drawLine(midx, midy, midx+(radius*qCos(angle1*3.14/180)),midy+(radius*qSin(angle1*3.14/180))); // This will work fine in both PC and embedded board.
Painter.drawLine(midx, midy, midx+(radius*qCos(angle*3.14/180)),midy+(radius*qSin(angle*3.14/180))); // Only working in PC
}
}
public:
int angle, angle1;
int drawCircle;
};
#endif // DIALOG_H
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include <stdlib.h>
#include <math.h>
#include <cmath>
#include <iostream>
#include <stdio.h>
QT_BEGIN_NAMESPACE
class QAction;
class QDialogButtonBox;
class QGroupBox;
class QLineEdit;
class QMenuBar;
class QPushButton;
class QTextEdit;
#include <QMainWindow>
#include <QTextEdit>
#include <QString>
#include <QtGui>
#include <QPushButton>
#include <QWidget>
#include <QBoxLayout>
#include <QPainter>
#include <QPaintEvent>
#include <QKeyEvent>
#include <QGraphicsView>
#include <qmath.h>
QT_END_NAMESPACE
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog();
private slots:
void draw_Circle();
void keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Q)
{
qApp->exit();
}
}
void paintEvent(QPaintEvent *)
{
QPainter Painter(this);
Painter.setRenderHint(QPainter::Antialiasing,true) ;
if (drawCircle ==1)
{
int x1,y1,x2,y2;
x1 =100;
y1 = 100;
x2 = 400;
y2 = 400;
int midx = 300;
int midy = 300;
int radius = 200;
angle1 = 100;
qDebug()<< angle;
qDebug()<< angle1;
Painter.setBrush(QColor(Qt::white));
Painter.drawEllipse(x1,y1,x2,y2);
Painter.setPen(QPen(QColor(Qt::black)));
Painter.drawLine(midx, midy, midx+radius, midy);
Painter.drawLine(midx, midy, midx+(radius*qCos(angle1*3.14/180)),midy+(radius*qSin(angle1*3.14/180))); // This will work fine in both PC and embedded board.
Painter.drawLine(midx, midy, midx+(radius*qCos(angle*3.14/180)),midy+(radius*qSin(angle*3.14/180))); // Only working in PC
}
}
public:
QWidget *main_widget;
QTextEdit *circleRadiusText;
QVBoxLayout *menu_layout;
int angle, angle1;
int drawCircle;
};
#endif // DIALOG_H
To copy to clipboard, switch view to plain text mode
By checking this program or by trying this program you can help me I guess.
Waiting for your reply...
Bookmarks