抱歉,如果我遗漏了一些明显的东西,但我似乎无法找到我的问题的答案。任何帮助,将不胜感激。
我正在尝试使用 QSlider 来操作我创建的类中的数据。
在主窗口构造函数中,我有以下内容:
connect(ui->horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
使用同一类中定义的插槽:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
AFrame *frame;
Ui::MainWindow *ui;
public slots:
void setValue(int val)
{
frame->setMphValue(val);
}
};
我的框架类是一个提升的小部件,允许在我设置的图像上绘图,定义如下:
class AFrame : public QLabel
{
Q_OBJECT
public:
AFrame( QWidget *parent );
void setMphValue(int val) { m_mph = val; }
protected:
void paintEvent( QPaintEvent *event );
private:
int m_mph;
};
问题是当我尝试在 AFrame 类的 paintEvent 函数中分配 m_mph 值时,整数值会丢失。
我有什么明显的遗漏吗?有没有更好的方法来解决这个问题?
还有我的paintEvent代码:
void AFrame::paintEvent(QPaintEvent *event)
{
QLabel::paintEvent(event);
QPainter painter(this);
QPen pen("#FF0099");
pen.setWidth(8);
painter.setPen(pen);
//rpm
painter.drawLine(250,275,165,165);
//oil
painter.drawLine(450,100,400,75);
//fuel
painter.drawLine(650,95,600,65);
//mph
QRect rec(0,0,125,3);
int velocity = m_mph;
int rpmStartVal = -225;
float mph = velocity * 1.68;
painter.translate(870,275);
painter.rotate(rpmStartVal + mph);
painter.drawRect(rec);
}