Qt事例: QScrollArea滚动区域
/******* ChatList.h ******/
#define CHATLIST_H
#include <QWidget>
#include <QScrollArea>
class ChatList: public QWidget
{
public:
ChatList(QWidget *parent);
~ChatList();
void initComponent();
private:
QScrollArea *m_pScrollArea;
};
#endif // CHATLIST_H
/******* ChatList.cpp ******/
#include "ChatList.h"
#include <QGridLayout>
#include <QPushButton>
ChatList::ChatList(QWidget *parent):QWidget(parent)
{
initComponent();
}
ChatList::~ChatList()
{
delete m_pScrollArea;
}
void ChatList::initComponent()
{
m_pScrollArea = new QScrollArea(this);
//m_pScrollArea->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
m_pScrollArea->setWidgetResizable(true);
QGridLayout *pSCLayout = new QGridLayout;
pSCLayout->setContentsMargins(0,0,0,0);
pSCLayout->setHorizontalSpacing(0);
pSCLayout->setVerticalSpacing(0);
//pSCLayout->setSizeConstraint(QVBoxLayout::SetMinAndMaxSizet);
QWidget *widget = new QWidget(this);
//widget->setMinimumSize(72, 32);
//widget->setMaximumSize(80, 32);
for(int i=0; i < 10; i++)
{
QPushButton *pshButt = new QPushButton(QString("PushButton")+QString::number(i+1), widget);
pshButt->setFixedHeight(60);
pshButt->setMinimumSize(pshButt->size());
pSCLayout->addWidget(pshButt, i, 0);
}
widget->setLayout(pSCLayout);
m_pScrollArea->setWidget(widget);
QVBoxLayout *m_mainLayout = new QVBoxLayout(this);
m_mainLayout->setContentsMargins(0, 0, 0, 0);
m_mainLayout->setSpacing(0);
m_mainLayout->addWidget(m_pScrollArea);
setLayout(m_mainLayout);
}
/******* mainwindow.h ******/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
};
#endif // MAINWINDOW_H
/******* mainwindow.cpp ******/
#include "mainwindow.h"
#include "ChatList.h"
#include <QPushButton>
MainWindow::MainWindow(QWidget *parent):
QMainWindow(parent)
{
ChatList *w = new ChatList(this);
w->resize(QSize(300,500));
QPushButton *pshButt = new QPushButton(QString("PushButton"),this);
pshButt->setGeometry(0,510,300,60);
}
MainWindow::~MainWindow()
{
}
/******* main.cpp ******/
#include <QApplication>
#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.resize(500,600);
w.show();
return a.exec();
}