qt实现不定数量的按钮向前向后移动展示
按钮模拟移动
- 引言
- 示例代码
-
- 第一种
-
- 思路
- 开发环境
- 代码结构
- 实现代码
- 第二种
-
- 思路
- 开发环境
- 实现代码
- 第三种
-
- 思路
- 开发环境
- 实现代码
- 总结
引言
此文主要记录用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()
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。