Qt事例: QScrollArea滚动区域

Qt事例: QScrollArea滚动区域

/******* ChatList.h ******/

#ifndef 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();
}



发布了41 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/wade_510/article/details/72814635