#ifndef LOTTO_H
#define LOTTO_H
#include <QWidget>
#include <QLabel>
#include <QTextEdit>
#include <QPushButton>
#include <QGridLayout>
class lotto : public QWidget
{
Q_OBJECT
private:
//widget data members
QLabel* numbersLabel;
QTextEdit* numEdit;
QPushButton* lotusButton;
public slots:
int generateLotteryNumbers ();
void displayNumbers();
public:
lotto();
};
#endif // LOTTO_H
#include "lotto.h"
#include <stdlib.h>
#include <time.h>
#include <QWidget>
#include <QGridLayout>
#include <iostream>
#include <sstream>
#include <QString>
#include "lotto.h"
using namespace std;
lotto::lotto(){
setWindowTitle("Lotto Numbers");
QGridLayout* layout = new QGridLayout(this);
lotusButton = new QPushButton ("Lotto Numbers");
numbersLabel = new QLabel ("Your lucky numbers are:");
numEdit = new QTextEdit();
layout->addWidget(lotusButton, 0,0);
layout->addWidget(numbersLabel, 1,0);
layout->addWidget(numEdit, 1,1);
setLayout(layout);
//connect signals and slots
connect(lotusButton,SIGNAL(clicked()),this, SLOT(generateLotteryNumbers()));
}
int lotto::generateLotteryNumbers (){
srand ( time(NULL) );
int i, j, num, duplicates, numbers[6];
for ( i = 0; i < 6; i++ ) {
do {
num = 1 + rand()%49;
duplicates = 0;
for ( j = 0; j < i; j++ ) {
if ( numbers[ j ] == num ) duplicates = 1;
}
}
while (duplicates);
numbers[ i ] = num;
}
}
void lotto::displayNumbers(){
numEdit->setText(QString::number(generateLotteryNumbers()));
}
我尝试在文本编辑框中显示 6 个乐透号码。使用lineedit更好吗?当我单击乐透号码按钮时,文本框仍然为空。为什么?如何让文本框(或行框)显示数字?
我试过这个:
void lotto::displayNumbers(){
srand ( time(NULL) );
int i, j, num, duplicates, numbers[6];
for ( i = 0; i < 6; i++ ) {
do {
num = 1 + rand()%49;
duplicates = 0;
for ( j = 0; j < i; j++ ) {
if ( numbers[ j ] == num ) duplicates = 1;
}
}
while (duplicates);
numbers[ i ] = num;
}
numEdit->setText(QString::number(num));
}
每次单击按钮时,我都会得到一个不同的数字(一次一个)