特定于qt的实现
我有一段代码:特定于qt的实现,qt,qt-creator,Qt,Qt Creator,我有一段代码: #include <QApplication> #include <QFont> #include <QLCDNumber> #include <QPushButton> #include <QSlider> #include <QVBoxLayout> #include <QWidget> class MyWidget : public QWidget { public:
#include <QApplication>
#include <QFont>
#include <QLCDNumber>
#include <QPushButton>
#include <QSlider>
#include <QVBoxLayout>
#include <QWidget>
class MyWidget : public QWidget
{
public:
MyWidget(QWidget *parent = 0);
};
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
QPushButton *quit = new QPushButton(tr("Quit"));
quit->setFont(QFont("Times", 18, QFont::Bold));
QLCDNumber *lcd = new QLCDNumber(3);
lcd->setSegmentStyle(QLCDNumber::Flat);
QSlider *slider = new QSlider(Qt::Horizontal);
slider->setRange(0, 999);
slider->setValue(0);
connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
connect(slider, SIGNAL(valueChanged(int)),
lcd, SLOT(display(int)))
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(quit);
layout->addWidget(lcd);
layout->addWidget(slider);
setLayout(layout);
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyWidget widget;
widget.show();
return app.exec();
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
类MyWidget:publicqwidget
{
公众:
MyWidget(QWidget*parent=0);
};
MyWidget::MyWidget(QWidget*父项)
:QWidget(父项)
{
QPushButton*quit=新的QPushButton(tr(“quit”));
退出->设置字体(QFont(“Times”,18,QFont::Bold));
QLCDNumber*lcd=新的QLCDNumber(3);
lcd->setSegmentStyle(QLCDNumber::Flat);
QSlider*滑块=新QSlider(Qt::水平);
滑块->设置范围(0,999);
滑块->设置值(0);
连接(退出、信号(单击())、qApp、插槽(退出());
连接(滑块,信号(值更改(int)),
lcd,插槽(显示(int)))
QVBoxLayout*布局=新的QVBoxLayout;
布局->添加小部件(退出);
布局->添加小部件(lcd);
布局->添加小部件(滑块);
设置布局(布局);
}
int main(int argc,char*argv[])
{
QApplication应用程序(argc、argv);
我的小部件;
widget.show();
返回app.exec();
}
当我达到时间间隔的最大值时,我想退出,我如何使用信号和插槽来实现这个
,提前感谢向您的MyWidget
类添加一个插槽函数,例如on_max\u exit(int)
,如下所示:
class MyWidget : public QWidget
{
public:
MyWidget(QWidget *parent = 0);
public slots:
void on_maximum_exit(int );
};
定义新功能:
void MyWidget::on_maximum_exit(int value)
{
if (value == slider->maximum())
close();
}
在MyWidget
constructor中,在connect(滑块,信号(valueChanged(int))之后,…
添加:
/* ... */
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(on_maximum_exit(int)));
/* ... */
当然要使用Qt文档!就像我在另一篇文章中说的,这应该适合你:
main.cpp
#include <QApplication>
#include "mywidget.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MyWidget widget;
widget.show();
return app.exec();
}
#包括
#包括“mywidget.h”
int main(int argc,char*argv[])
{
QApplication应用程序(argc、argv);
我的小部件;
widget.show();
返回app.exec();
}
mywidget.h
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
#include <QObject>
include <QPushButton>
#include <QSlider>
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget(QWidget *parent = 0);
~MyWidget(){};
public slots:
void getSliderValueAndQuit();
private:
QPushButton *quit;
QSlider *slider;
};
#endif // MYWIDGET_H
\ifndef MYWIDGET\u H
#定义MYWIDGET_H
#包括
#包括
包括
#包括
类MyWidget:publicqwidget
{
Q_对象
公众:
MyWidget(QWidget*parent=0);
~MyWidget(){};
公众时段:
void getSliderValueAndQuit();
私人:
QPushButton*退出;
QSlider*滑块;
};
#endif//MYWIDGET_H
myWidget.cpp
#include "mywidget.h"
#include <QWidget>
#include <QObject>
#include <QApplication>
#include <QFont>
#include <QLCDNumber>
#include <QPushButton>
#include <QSlider>
#include <QVBoxLayout>
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent)
{
quit = new QPushButton(tr("Quit"));
quit->setFont(QFont("Times", 18, QFont::Bold));
QLCDNumber *lcd = new QLCDNumber(3);
lcd->setSegmentStyle(QLCDNumber::Flat);
slider = new QSlider(Qt::Horizontal);
slider->setRange(0, 999);
slider->setValue(0);
connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
connect(slider, SIGNAL(valueChanged(int)),lcd, SLOT(display(int)));
connect(slider,SIGNAL(sliderReleased()), SLOT(getSliderValueAndQuit()));
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(quit);
layout->addWidget(lcd);
layout->addWidget(slider);
setLayout(layout);
}
void MyWidget::getSliderValueAndQuit(){
if(slider->value() == slider->maximum())
close();
}
#包括“mywidget.h”
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
MyWidget::MyWidget(QWidget*父项):
QWidget(父级)
{
退出=新的QPushButton(tr(“退出”);
退出->设置字体(QFont(“Times”,18,QFont::Bold));
QLCDNumber*lcd=新的QLCDNumber(3);
lcd->setSegmentStyle(QLCDNumber::Flat);
滑块=新的QSlider(Qt::水平);
滑块->设置范围(0,999);
滑块->设置值(0);
连接(退出、信号(单击())、qApp、插槽(退出());
连接(滑块、信号(值更改(int))、lcd、插槽(显示(int));
连接(滑块、信号(sliderReleased())、插槽(getSliderValueAndQuit());
QVBoxLayout*布局=新的QVBoxLayout;
布局->添加小部件(退出);
布局->添加小部件(lcd);
布局->添加小部件(滑块);
设置布局(布局);
}
void MyWidget::getSliderValueAndQuit(){
如果(滑块->值()==滑块->最大值())
close();
}
我有两个问题,在这一行:值==滑块->最大值(),slider未在范围内定义,第二,即使我将其更改为999,它也不起作用,请您解释为什么?是的,您需要首先在类中预定义slider
。在类中添加QSlider*slider;
在public
之后添加word和code just liveslider=新的QSlider(Qt::Horizontal);
;