gpt4 book ai didi

c++ - 在随机位置生成 QPushButtons 的定时器

转载 作者:行者123 更新时间:2023-11-28 05:38:42 25 4
gpt4 key购买 nike

我想设置一个计时器,每 30 毫秒在小部件的随机位置创建一个 QPushButton。我有以下代码,但它不起作用(窗口标题更改,但没有 QPushButton 出现):

.h 文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class Tbutton : public QWidget
{
Q_OBJECT
public:
Tbutton(QWidget * parent=0);
protected:

void timerEvent(QTimerEvent *event);

};

#endif // MAINWINDOW_H

.cpp 文件:

#include <QTimer>
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>
Tbutton::Tbutton(QWidget *parent) :QWidget(parent)
{

startTimer(30);

}

void Tbutton::timerEvent(QTimerEvent *e)
{

Q_UNUSED(e);
QPushButton * b1=new QPushButton("re",this);
b1->setGeometry(rand(),rand(),20,20);
QString abs="abs"+QString::number(rand());
setWindowTitle(abs);
}

最佳答案

rand() 返回一个介于 0RAND_MAX 之间的整数,这通常是一个很大的值(在 VC++ CRT 上是 32767,在glibc 是 2147483647);所以在几乎所有情况下,您都会在窗口的下方/右侧远处生成按钮,在那里它们根本不可见。

您可以通过将随机范围限制为包含窗口的大小来解决此问题:

QPushButton * b1=new QPushButton("re",this);
b1->setGeometry(
rand() % std::max((this->width()-20), 1),
rand() % std::max((this->height()-20), 1),
20,20);

关于c++ - 在随机位置生成 QPushButtons 的定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37633529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com