2017-08-11 99 views
-2

時許設計攝像頭應用程序,所以我有MenuBarClass(這將創建菜單圖標),CameraViewClass(創建圖像控件在那裏得到實時顯示圖像),RecentImageClass(顯示最近的圖像),所以我想要在一個主窗口中顯示所有類對象(例如:菜單圖標,圖像小部件,最新圖像小部件)。我在菜單欄類中使用了所有類實例對象,但仍然無法在主窗口中顯示所有內容。我沒有使用ui表單。的Qt顯示所有類對象(UI元素)到一個主窗口

class MenuBar : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    MenuBar(QWidget *parent = 0); 
    ~MenuBar(); 
    void CrateAction(); 
    void CreateStatusbar(); 
public slots: 
    void open(); 
private: 
    CameraView *mview; 
    RecentImage *mImage; 
    QMenu *mFile; 
    QMenu *mPath; 
    QMenu *mSave; 
    QWidget *mcentralwidget; 
    QWidget *wid; 
}; 

MenuBar::MenuBar(QWidget *parent) 
    : QMainWindow(parent), 
     mFile(NULL), 
     mPath(NULL), 
     mSave(NULL), 
     mcentralwidget(NULL) 

{ 
    mview=new CameraView(this); 
    mImage=new RecentImage(this); 

    //mcentralwidget=new QWidget(this); 
    //setCentralWidget(mcentralwidget); 

    resize(800,600); 
    CrateAction(); 
    CreateStatusbar(); 
} 


class CameraView : public QMainWindow 
{ 
    Q_OBJECT 
public: 
    explicit CameraView(QWidget *parent = 0); 
    void SetCamera(const QCameraInfo& view); 
    void StartCamera(); 
    void StopCamera(); 
    void Record(); 
    void Pause(); 
public slots: 

private: 
    QWidget *mImageWidget; 
    QCamera *mCamera; 
    QCameraImageCapture *mImageCapture; 
    QMediaRecorder *mRecorder; 
}; 

CameraView::CameraView(QWidget *parent) : 
    QMainWindow(parent), 
    mCamera(NULL), 
    mImageCapture(NULL), 
    mRecorder(NULL), 
    mImageWidget(NULL) 
{ 
    mImageWidget=new QWidget(); 
    mImageWidget->setStyleSheet("border:1px solid black"); 
    // mImageWidget->setGeometry(1,1,798,350); 
} 
class RecentImage : public QMainWindow 
{ 
    Q_OBJECT 
public: 
    explicit RecentImage(QWidget *parent = 0); 
    void createScrollArea(); 
signals: 

public slots: 

private: 
    QWidget *mWidget1,*mWidget2; 
    QHBoxLayout *mHlayout; 
    QScrollArea *mScrollArea; 

}; 

RecentImage::RecentImage(QWidget *parent) : 
    QMainWindow(parent), 
    mWidget1(NULL), 
    mWidget2(NULL), 
    mHlayout(NULL), 
    mScrollArea(NULL) 
{ 
    createScrollArea(); 
} 
void RecentImage::createScrollArea() 
{ 
    QHBoxLayout *vLayout = new QHBoxLayout(); 
    QScrollArea *scrollArea = new QScrollArea(); 
    //scrollArea->setWidgetResizable(true); 
    QWidget *widget = new QWidget(); 
    widget->setGeometry(0,200,600,150); 
    widget->setStyleSheet("border:1px solid black"); 
    QHBoxLayout *vLayout2 = new QHBoxLayout(widget); 
    scrollArea->setWidget(widget); 
    vLayout->addWidget(scrollArea); 
    setCentralWidget(scrollArea); 

    for (int i = 0; i < 20; i++) { 
     QWidget *widget = new QWidget(); 
     vLayout2->addWidget(widget); 
    } 
    show(); 
} 

回答

0

在菜單欄的構造函數創建一個佈局的框架和小部件添加到它是這樣的:

QHBoxLayout *layoutMain(new QHBoxLayout()); 
QFrame *frmMain(new QFrame(this)); 

mview = new CameraView(this); 
mImage = new RecentImage(this); 

layout->addWidget(mview); 
layout->addWidget(mImage); 

frmMain->setLayout(layoutMain); 

setCentralWidget(frmMain); 

resize(800,600); 
CrateAction(); 
CreateStatusbar();