特定于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 live
slider=新的QSlider(Qt::Horizontal);