qt实现不定数量的按钮向前向后移动展示

04-27 1080阅读

按钮模拟移动

  • 引言
  • 示例代码
    • 第一种
      • 思路
      • 开发环境
      • 代码结构
      • 实现代码
    • 第二种
      • 思路
      • 开发环境
      • 实现代码
    • 第三种
      • 思路
      • 开发环境
      • 实现代码
    • 总结

引言

此文主要记录用qt实现按钮的移动,具体效果如下:

模拟按钮移动效果

示例代码

本文记录了三种实现方式。

第一种

思路

用动态数组vector存放创建的按钮QPushButton的指针,使用两个同类型的二级指针QPushButton来指向数组中的元素,初始状态下,首尾指针都指向数组中第一个元素,随着界面初始化时需要显示的按钮的个数的增加,尾指针不断地移动,确保首指针永远指向窗中显示的按钮的第一个,尾指针指向窗口显示的按钮的最后一个按钮,同时在首尾指针处对应的各自有首计数,和尾计数,来记录当前首尾指针所在处分别是第几个元素,以一开始计数,向前移动时,当首计数为1时,不可向前,尾计数为最后一个元素时,不可向后。
qt实现不定数量的按钮向前向后移动展示

开发环境

Qt5.15.2MinGW 64bit编译器。

代码结构

qt实现不定数量的按钮向前向后移动展示

实现代码

下面是具体的实现代码。
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()
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]