과제를 위해 C++과 Qt를 사용하여 WordPress와 유사한 CMS를 만들어야합니다. 기본 페이지에서 모든 게시물을 스크롤 막대가있는 영역에 표시해야합니다. QScrollArea를 사용하여 시도했지만 문제가 레이아웃 인 것 같습니다. 제공된 높이에 맞게 내부의 객체를 축소합니다. 객체의 크기 정책을 고정으로 설정하여이 문제를 해결하려했지만 놀랍게도 전혀 차이가 없었습니다! 놓친 그냥 없는지 확인하기 위해위젯의 스크롤 영역 만들기
이#include "cms.h"
#include "user.h"
#include "post.h"
#include "uipost.h"
#include <QStyle>
#include <QDesktopWidget>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QScrollArea>
#include <QPushButton>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QLabel>
#include <QSizePolicy>
CMS::CMS(User & SignedInUser, QWidget *parent) : QWidget(parent), signedInUser(SignedInUser) {
User admin;
Post temp(admin);
QHBoxLayout *mainLayout = new QHBoxLayout();
QScrollArea *posts = new QScrollArea();
posts->setWidgetResizable(true);
posts->setFrameShape(QFrame::NoFrame);
QVBoxLayout *postsLayout = new QVBoxLayout(posts);
for (int i = 0; i < 50; i++) {
QLabel *label = new QLabel(tr("some sample label"));
postsLayout->addWidget(label);
/* Here the posts will be read from file and shown. Since the class for posts isn't still ready, I'm just trying to try it with label and later on use that class.
* That class inheritances QFrame.
*/
}
QVBoxLayout *buttonsLayout = new QVBoxLayout();
buttonsLayout->setAlignment(Qt::AlignTop);
QPushButton *manUsers = new QPushButton(tr("Manage Users"));
buttonsLayout->addWidget(manUsers);
QPushButton *addUser = new QPushButton(tr("Add a User"));
buttonsLayout->addWidget(addUser);
QPushButton *logout = new QPushButton(tr("Log Out"));
buttonsLayout->addWidget(logout);
QPushButton *exit = new QPushButton(tr("Exit"));
buttonsLayout->addWidget(exit);
mainLayout->addWidget(posts);
mainLayout->addLayout(buttonsLayout);
setLayout(mainLayout);
setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, size(), QDesktopWidget().availableGeometry())); // Centerizing the window
setFixedSize(size()); // Making the window unresizable
connect(exit, &QPushButton::clicked, this, &QWidget::close);
}
클래스 정의가 어떤 특정 포함되지 않은 :하지만 여기
은 내가 만들려고 창에 코드의#ifndef CMS_H
#define CMS_H
#include <QMainWindow>
#include "user.h"
namespace Ui {
class CMS;
}
class CMS : public QWidget {
Q_OBJECT
private:
User & signedInUser;
public:
CMS(User & SignedInUser, QWidget *parent = nullptr);
};
#endif // CMS_H
참조 및 링크 주셔서 감사합니다. –