QT实现随机选人参加节目

变量定义

class Resonator : public QMainWindow
{
	Q_OBJECT
public:
	Resonator(QWidget *parent = Q_NULLPTR);
	void InitUI();
private:
	QPushButton * btn;
	QLineEdit * line;
	QComboBox * choice;
	QVector<int> RequiredNum = { 2,2,3 };
	QVector<int> CurrentNum = { 0,0,0 };
	QVector<QString> Member;
	Ui::ResonatorClass ui;
	private slots:
	void RandomSelect();
};

窗口初始化

void Resonator::InitUI()
{
	line = new QLineEdit(this);
	btn = new QPushButton(this);
	btn->setText(tr("phi(w)"));
	choice = new QComboBox(this);
	choice->addItem(tr("相声剧本"));
	choice->addItem(tr("三句半"));
	choice->addItem(tr("合唱排练"));
	choice->move(30, 30);
	line->move(140, 30);
	btn->move(250, 30);
	remove("list.txt");
	connect(btn, SIGNAL(clicked()), this, SLOT(RandomSelect()));
}

随机数选择

//使用随机数选人,并把选到的人要参加的节目记录下来,然后将被选中的人从候选列表中删除
void Resonator::RandomSelect()
{
	int curIdx, randIdx, k;
	if (Member.size() == 0)
	{
		line->setText(tr("木有人了"));
		return;
	}
	curIdx = choice->currentIndex();
	if (CurrentNum[curIdx] == RequiredNum[curIdx])
	{
		QMessageBox::warning(this, "warning", "这个项目不要人了");
		return;
	}
	else
	{
		CurrentNum[curIdx]++;
	}
	srand(time(NULL));
	randIdx = rand() % Member.size();
	line->setText(Member[randIdx]);

	QFile file("list.txt");
	file.open(QIODevice::ReadWrite | QIODevice::Append);
	QTextStream out(&file);
	out << Member.at(randIdx) << "  " << choice->currentText() << endl;


	QVector<QString>::iterator iter;
	for (k=0,iter = Member.begin(); iter != Member.end(); iter++,k++)
	{
		if (k == randIdx)
		{
			Member.erase(iter);
			break;
		}
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值