今天进一步的练习qt的编程方法,通过一个简单的例子来巩固下自定义信号与自定义槽的使用,例子是这样,绘制一个按钮,点击按钮后,在按钮上显示单击的次数。这里需要使用自定义槽,发生SIGNAL(clicked())后除法自定义槽,然后槽在调用成员函数绘制数字。
【count.cpp】 #include <QFont> #include <QWidget> #include <QPushButton> #include "count.h" #include <stdlib.h> #include <stdio.h> COUNT::COUNT(QWidget *parent):QWidget(parent) { value=0; b1=new QPushButton("button",this); b1->setFont(QFont("Times",18,QFont::Bold)); b1->setGeometry(40,40,120,60); connect(b1,SIGNAL(clicked()),this,SLOT(setvalue()) ); } void COUNT::setvalue(void) { value++; //对qt的string不太熟悉,还是比较依赖c,这个会在以后的学习中注意 char *tmp=new char[3]; tmp[2]='\0'; sprintf(tmp,"%d",value); b1->setText(tmp); }
|
头文件:
【count.h】
#ifndef COUNT_H #define COUNT_H #include <QWidget> #include <QPushButton> class COUNT:public QWidget { Q_OBJECT public: COUNT(QWidget *parent=0); QPushButton *b1; public slots: void setvalue(void); private: int value; }; #endif
|
在练习下lcdnumber 和label的使用,绘制一个lcdnumber部件和label部件,放置在qvboxlayout中。
【头文件lcdrange.h】 #ifndef LCDRANGE_H #define LCDRANGE_H #include <QWidget> #include <QLCDNumber> #include <QLabel> #include <QVBoxLayout> class lcdrange:public QWidget { // Q_OBJECT public: lcdrange(QWidget *parent=0); QLCDNumber *b1; QLabel *text; QVBoxLayout *lay; // public slots:
// void setvalue(int value); private: int currentvalue; }; #endif
【lcdrange.cpp文件】
#include "lcdrange.h" #include <QWidget> #include <QLCDNumber> #include <QLabel> #include <QVBoxLayout> lcdrange::lcdrange(QWidget *parent):QWidget(parent) { b1=new QLCDNumber(2); b1->setSegmentStyle(QLCDNumber::Filled); text=new QLabel("player scores"); lay=new QVBoxLayout(this); lay->addWidget(b1); lay->addWidget(text); }
|
阅读(1205) | 评论(0) | 转发(0) |