主要控件:QStackedWidget、QRadioButton、QPushButton
begin.h
#ifndef BEGIN_H
#define BEGIN_H
#include <QMainWindow>
#include <QMouseEvent>
#include <QStackedWidget>
namespace Ui {
class begin;
}
class begin : public QMainWindow
{
Q_OBJECT
public:
explicit begin(QWidget *parent = 0);
~begin();
private slots:
void on_radioButton_1_clicked();
void on_radioButton_2_clicked();
void on_radioButton_3_clicked();
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent();
void mouseMoveEvent(QMouseEvent *event);
private:
Ui::begin *ui;
QPoint m_startPos;
};
#endif // BEGIN_H
begin.cpp:
#include "begin.h"
#include "ui_begin.h"
#include <QDebug>
begin::begin(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::begin)
{
ui->setupUi(this);
ui->pushButton->setFocusPolicy(Qt::NoFocus);
ui->pushButton_2->setFocusPolicy(Qt::NoFocus);
ui->pushButton_3->setFocusPolicy(Qt::NoFocus);
ui->radioButton_1->setFocusPolicy(Qt::NoFocus);
ui->radioButton_2->setFocusPolicy(Qt::NoFocus);
ui->radioButton_3->setFocusPolicy(Qt::NoFocus);
// 设置初始界面和对应的radioButton状态
ui->menu->setCurrentIndex(2);
ui->radioButton_1->setChecked(true);
ui->page1->show();
ui->page2->hide();
ui->page3->hide();
}
begin::~begin()
{
delete ui;
}
void begin:: mousePressEvent(QMouseEvent *event)
{
m_startPos = event->pos();
}
void begin::mouseMoveEvent(QMouseEvent *event)
{
if (event->buttons() & Qt::LeftButton)
{
int deltaX = event->pos().x() - m_startPos.x();
if (deltaX < 0)
{
if(ui->menu->currentIndex() == ui->menu->count()-1)
ui->menu->setCurrentIndex(0);
else
ui->menu->setCurrentIndex(ui->menu->currentIndex() + 1);
}
else if (deltaX > 0)
{
if(ui->menu->currentIndex() == 0)
ui->menu->setCurrentIndex(ui->menu->count()-1);
else
ui->menu->setCurrentIndex(ui->menu->currentIndex() -1);
}
// 设置对应的radioButton为选中状态
if(ui->menu->currentIndex() == 2)
ui->radioButton_1->setChecked(true);
else if(ui->menu->currentIndex() == 0)
ui->radioButton_2->setChecked(true);
else if(ui->menu->currentIndex() == 1)
ui->radioButton_3->setChecked(true);
}
}
void begin::mouseReleaseEvent()
{
// 重置起始位置
m_startPos = QPoint();
}
void begin::on_radioButton_1_clicked()
{
ui->page1->show();
ui->page2->hide();
ui->page3->hide();
}
void begin::on_radioButton_2_clicked()
{
ui->page2->show();
ui->page1->hide();
ui->page3->hide();
}
void begin::on_radioButton_3_clicked()
{
ui->page3->show();
ui->page1->hide();
ui->page2->hide();
}