gpt4 book ai didi

c++ - 在 Qt Gui 中如何使按钮在每次点击时随机出现

转载 作者:行者123 更新时间:2023-11-28 03:32:19 24 4
gpt4 key购买 nike

好吧,有没有办法让这个程序在每次单击按钮时随机更改变量 x 和 y?我是编程新手...

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QtGUI>
#include <QWidget>
#include <cstdlib>
#include <ctime>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);


QWidget *window = new QWidget;

srand(time(0));
int x = 1+(rand()%900);
int y = 1+(rand()%400);

QPushButton *MainInter = new QPushButton("Push me!",window);

QPropertyAnimation *animation = new QPropertyAnimation(MainInter, "pos");
animation->setDuration(0);
animation->setEndValue(QPoint(x,y));

Object::connect(MainInter,SIGNAL(released()),animation,SLOT(start()));


window->resize(900,500);
window->show();

return a.exec();
}

最佳答案

您可以做的是,您可以创建自己的自定义 SLOT,而不是将按钮的 released() 信号直接连接到动画 start() SLOT .然后将按钮连接到它,处理 Action ,并调用动画。

首先阅读如何创建自定义 QWidget,而不是在 main() 中创建顶级对象。 Simple example here

自定义小部件可能如下所示:

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

class QPushButton;
class QPropertyAnimation;

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

private:
QPushButton *button;
QPropertyAnimation *animation;

public slots:
void randomizeAnim();
};

#endif // WIDGET_H

小部件.cpp

#include "widget.h"
#include <QPushButton>
#include <QPropertyAnimation>
#include <ctime>

MyWidget::MyWidget(QWidget *parent) :
QWidget(parent)
{
button = new QPushButton("Push me!", this);
animation = new QPropertyAnimation(button, "pos");
animation->setDuration(0);

QObject::connect(button, SIGNAL(released()), this, SLOT(randomizeAnim()));
}

void MyWidget::randomizeAnim()
{
srand(time(0));
int x = 1+(rand()%900);
int y = 1+(rand()%400);

animation->setEndValue(QPoint(x,y));
animation->start();

}

现在您的 main.cpp 可以简化为样板代码:

#include <QApplication>
#include "widget.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QWidget *window = new MyWidget;
window->resize(900,500);
window->show();

return a.exec();
}

每次点击时,您的自定义插槽都会处理 Action 并制作动画。

关于c++ - 在 Qt Gui 中如何使按钮在每次点击时随机出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12148975/

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