zoukankan      html  css  js  c++  java
  • QT学习5:组装积木

     
    #include <QApplication>//在每一个使用QT的应用程序中都必须使用QApplication,它管理了各种
    //应用程序的广泛资源,比如默认字体和光标
    #include <QPushButton.h>//经典的图形用户界面按钮,QWidget,可以显示一段文本或QPixmap
    #include <QFont.h>//QT中的字体
    #include <QLCDNumber.h>//顾名思义,像LCD一样显示数字的widget吧!
    #include <QSlider.h>//滑动条
    #include <QVBoxLayout>
    
    class MyWidget :public QWidget
    {
    public:
    	MyWidget(QWidget* parent=0, const char *name=0);
    
    };
    
    MyWidget::MyWidget(QWidget* parent, const char *name)
    :QWidget(parent, name)
    {
    	//quit是局部变量,当MyWidget被删除时,默认它也被删除了,所以MyWidget不需要一个析构函数
    	//当然,你也可以选择去删除它
    	//QPushButton(const QString &text, QWidget *parent, const char* name);
        QPushButton *quit = new QPushButton("Quit", this, "quit");
    	quit->setFont(QFont("Times", 18, QFont::Bold));
    
        //qApp指的就是QApplication的指针。
    	connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
    
    	//--------------------------------------------------------
    	// 要显示的位数是2就只能显示到99,
    	// 以后不显示了,是3就只能显示到999,
    	// 而且display变化太快,显示位数太少,比如0-999变化,
    	// 如果设置为1,直接拖动滑动条超出9,可能就一直显示成0了
    	// -- hgy notes.
    	//--------------------------------------------------------
    	QLCDNumber *lcd = new QLCDNumber(1, this);
    
    	//Horizontal:水平
    	QSlider *slider = new QSlider(Qt::Orientation::Horizontal, this);
    	//设置范围
    	slider->setRange(0, 99);
    	//设置当前位置
    	slider->setValue(0);
    
    	//slider位置的改变值传给lcd的display
    	connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
    
    	//比如lcd只能显示1位,那么display接收到slider的数据大于9后,就overflow了。
        connect(lcd, SIGNAL(overflow()), qApp, SLOT(quit()));
    
    	//这里还是用Q4的QVBoxLayout,它不是基于QWidget的,所以QWidget要调用它
    	//就要用setLayout,而且运行程序会发现,addWidget最先的会显示在最上面.
    	QVBoxLayout *layout = new QVBoxLayout();
    	layout->addWidget(slider);
    	layout->addWidget(lcd);
    	layout->addWidget(quit);
    	setLayout(layout);
    
    }
    
    int main(int argc, char *argv[])
    {
    	QApplication a(argc, argv);//argc是命令行变量的数量,argv是数组,C、C++特征
    
    	MyWidget w;
    
    	//设置窗口大小..
    	//w.setGeometry(100, 100, 200, 200);
    	w.move(100, 100);
    	a.setMainWidget(&w);
    	w.show();
    
    	return a.exec();//控制转给QT,在exec中,QT接收并处理用户和系统的事件并把它们传给适当的窗口部件
    }
    

    1.QLCDNumber(uint numDigits, QWidget* parent, const char* name);第一个参数是numDigits代表要显示的位数,1就是1位数,那么display中传的数大于1位就溢出了,

    2.比如slider传的值一下子从0跳到2位数,那么QLCDNumber会一直显示它最初的值0(因为它只显示1位,第二个数已溢出)

  • 相关阅读:
    树形dp(HDU1520)
    POJ3071(概率DP)
    网络流之FF算法(poj1273&&洛谷P3376)
    二分图匹配之匈牙利算法
    江西财经大学第二届程序设计竞赛——E
    浅谈数位dp
    浅谈数位dp——hdu 不要62
    buns~~~一个简单的背包问题
    POJ 1066 Treasure Hunt (线段相交)
    POJ 2653 Pick-up sticks (线段相交)
  • 原文地址:https://www.cnblogs.com/hgy413/p/3693721.html
Copyright © 2011-2022 走看看