mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QScrollArea>
#include <QVBoxLayout>
#include <QPushButton>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
/* 制作滚动条显示多个按键 */
QWidget* pSubWidget;
QScrollArea* pScrollArea;
QVBoxLayout* pSubLayout;
QPushButton* pBtnGroup[100];
public slots:
void onButtonClicked();
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//创建一个子窗口,这个子窗口交给滚动区域
pSubWidget = new QWidget();
//在窗口(100,100)位置显示150*150大小的滚动区域
pScrollArea = new QScrollArea(this);
pScrollArea->setFixedSize(150, 150);
pScrollArea->setWidgetResizable(true);
pScrollArea->setWidget(pSubWidget);
pScrollArea->move(QPoint(0, 10)); // 设置显示区域的位置
//给子窗口设置一个垂直排版对象,动态添加按钮进去,子窗口会自动调整大小
pSubLayout = new QVBoxLayout(this);
pSubWidget->setLayout(pSubLayout);
for (auto i = 0; i < 10; ++i)
{
pBtnGroup[i] = new QPushButton(QString("Btn%1").arg(i), this); // 设置按键的名字
connect(pBtnGroup[i], SIGNAL(clicked()), this, SLOT(onButtonClicked())); // 加入槽函数
pSubLayout->addWidget(pBtnGroup[i]);
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::onButtonClicked()
{
QPushButton* btn = (QPushButton*)sender();
QString clickText = btn->text();
qDebug()<<"onButtonClicked clickText:"<<clickText;
}
点击某个按键可以打印出这个按键的名字,留出此接口,方便以后使用