如何创建一个 QWidget
How to create a QWidget
我正在尝试创建 QWidget
,但我一直收到错误消息:
/media/root/5431214957EBF5D7/projects/c/qt/tools/plugandpaint/app/mainwindow.cpp:53: error: no matching function for call to ‘QWidget::setLayout(QScrollArea*&)’
mainWin -> setLayout(scrollArea);
^
mainwindow.cpp
#include "mainwindow.h"
#include <QScrollArea>
#include <QApplication>
MainWindow::MainWindow() :
scrollArea(new QScrollArea)
{
mainWin = new QWidget();
// Create the button, make "this" the parent
m_button = new QPushButton("My Button", this);
// set size and location of the button
m_button->setGeometry(QRect(QPoint(100, 100), QSize(200, 50)));
// Connect button signal to appropriate slot
connect(m_button, SIGNAL (released()), this, SLOT (handleButton()));
label = new QLabel(QApplication::translate("windowlayout", "Name:"));
lineEdit = new QLineEdit();
layout = new QHBoxLayout();
layout->addWidget(label);
layout->addWidget(lineEdit);
scrollArea->setLayout(layout);
mainWin -> setLayout(scrollArea);
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QPushButton>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
class QActionGroup;
class QScrollArea;
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow();
private:
QWidget *mainWin;
QScrollArea *scrollArea;
QStringList pluginFileNames;
QPushButton *m_button;
QLabel *label;
QLineEdit *lineEdit;
QHBoxLayout *layout;
QVBoxLayout *vBox;
};
#endif
以下是我尝试将所有内容组合在一起的方法:
#include "mainwindow.h"
#include <QtPlugin>
#include <QApplication>
#include <QDesktopWidget>
Q_IMPORT_PLUGIN(BasicToolsPlugin)
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow window;
QDesktopWidget dw;
int x=dw.width()*0.7;
int y=dw.height()*0.7;
window.setFixedSize(x,y);
window.show();
return app.exec();
}
我哪里错了?如果问题太明显,我是一个 Qt/ C++ 新手。
提前致谢。
首先,我看不到任何地方
new QScrollearea()
二、这个:
QScrollArea*&
尤其是
*&
大多数时候是 pointer/reference 不匹配
的提示
我正在尝试创建 QWidget
,但我一直收到错误消息:
/media/root/5431214957EBF5D7/projects/c/qt/tools/plugandpaint/app/mainwindow.cpp:53: error: no matching function for call to ‘QWidget::setLayout(QScrollArea*&)’
mainWin -> setLayout(scrollArea);
^
mainwindow.cpp
#include "mainwindow.h"
#include <QScrollArea>
#include <QApplication>
MainWindow::MainWindow() :
scrollArea(new QScrollArea)
{
mainWin = new QWidget();
// Create the button, make "this" the parent
m_button = new QPushButton("My Button", this);
// set size and location of the button
m_button->setGeometry(QRect(QPoint(100, 100), QSize(200, 50)));
// Connect button signal to appropriate slot
connect(m_button, SIGNAL (released()), this, SLOT (handleButton()));
label = new QLabel(QApplication::translate("windowlayout", "Name:"));
lineEdit = new QLineEdit();
layout = new QHBoxLayout();
layout->addWidget(label);
layout->addWidget(lineEdit);
scrollArea->setLayout(layout);
mainWin -> setLayout(scrollArea);
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QPushButton>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
class QActionGroup;
class QScrollArea;
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow();
private:
QWidget *mainWin;
QScrollArea *scrollArea;
QStringList pluginFileNames;
QPushButton *m_button;
QLabel *label;
QLineEdit *lineEdit;
QHBoxLayout *layout;
QVBoxLayout *vBox;
};
#endif
以下是我尝试将所有内容组合在一起的方法:
#include "mainwindow.h"
#include <QtPlugin>
#include <QApplication>
#include <QDesktopWidget>
Q_IMPORT_PLUGIN(BasicToolsPlugin)
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow window;
QDesktopWidget dw;
int x=dw.width()*0.7;
int y=dw.height()*0.7;
window.setFixedSize(x,y);
window.show();
return app.exec();
}
我哪里错了?如果问题太明显,我是一个 Qt/ C++ 新手。
提前致谢。
首先,我看不到任何地方
new QScrollearea()
二、这个:
QScrollArea*&
尤其是
*&
大多数时候是 pointer/reference 不匹配
的提示