2017-02-06 8 views
-1

Я пытаюсь создать 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++, если проблема слишком очевидна.

Заранее спасибо.

+0

, пожалуйста, прочитайте руководство. предупреждение говорит все: qwidget не имеет способа установить макет в область прокрутки. – user3528438

+0

'setLayout' запрашивает указатель' QLayout', вы даете ему указатель 'QScrollArea'. компилятору это не нравится. –

+0

-1 Прошу прощения, но вопрос полностью не соответствует вашей проблеме, и сложно сказать, чего вы пытаетесь достичь, путем настройки макетов окон в область прокрутки. Пожалуйста, сжимайте его до MCVE, сушите вопрос, прочитайте документацию и т. Д. – cubuspl42

ответ

0

Прежде всего, я не могу увидеть где-нибудь в

new QScrollearea() 

Во-вторых, это:

QScrollArea*& 

особенно

*&

в большинстве случаев подсказка для указателя/несоответствие ссылок

Смежные вопросы