qt实现不定数量的按钮向前向后移动展示
温馨提示:这篇文章已超过370天没有更新,请注意相关的内容是否还可用!
按钮模拟移动
- 引言
- 示例代码
-
- 第一种
-
- 思路
- 开发环境
- 代码结构
- 实现代码
- 第二种
-
- 思路
- 开发环境
- 实现代码
- 第三种
-
- 思路
- 开发环境
- 实现代码
- 总结
引言
此文主要记录用qt实现按钮的移动,具体效果如下:
模拟按钮移动效果
示例代码
本文记录了三种实现方式。
第一种
思路
用动态数组vector存放创建的按钮QPushButton的指针,使用两个同类型的二级指针QPushButton来指向数组中的元素,初始状态下,首尾指针都指向数组中第一个元素,随着界面初始化时需要显示的按钮的个数的增加,尾指针不断地移动,确保首指针永远指向窗中显示的按钮的第一个,尾指针指向窗口显示的按钮的最后一个按钮,同时在首尾指针处对应的各自有首计数,和尾计数,来记录当前首尾指针所在处分别是第几个元素,以一开始计数,向前移动时,当首计数为1时,不可向前,尾计数为最后一个元素时,不可向后。
开发环境
Qt5.15.2MinGW 64bit编译器。
代码结构
实现代码
下面是具体的实现代码。
mian.cpp
#include "widget.h"
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include
#include "scrollbuttonwidget.h"
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ScrollButtonWidget *p = new ScrollButtonWidget(this);
}
Widget::~Widget()
{
delete ui;
}
scrollbuttonwidget.h
#ifndef SCROLLBUTTONWIDGET_H
#define SCROLLBUTTONWIDGET_H
#include
#include
#include
#include
#define TOTAL_NUM 5
#define VISUAL_NUM 3
class ScrollButtonWidget : public QWidget
{
Q_OBJECT
public:
explicit ScrollButtonWidget(QWidget *parent = nullptr);
protected:
void createButtons();
void setLayout();
void initInterface();
void goBack();
void toFront();
signals:
public slots:
private:
std::vector m_pBtnVector;
int m_nCurNum;
int m_nTailNum;
int m_nFrontNum;
QPushButton **m_pFront;
QPushButton **m_pTail;
};
#endif // SCROLLBUTTONWIDGET_H
scrollbuttonwidget.cpp
#include "scrollbuttonwidget.h"
#include
#include
ScrollButtonWidget::ScrollButtonWidget(QWidget *parent) : QWidget(parent)
{
m_nCurNum = 0;
m_nTailNum = 0;
m_nFrontNum = 0;
m_pTail = nullptr;
m_pFront = nullptr;
createButtons()
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

