2017-08-11 20 views
-2

Webカメラアプリケーションを設計しているので、メニューアイコンを作成するMenuBarClass、ライブ画像が表示される画像ウィジェットを作成するCameraViewClass、最近の画像を表示するRecentImageClass、だから私はすべてのクラスオブジェクト(例:メニューアイコン、画像ウィジェット、最近画像ウィジェット)が1つのメインウィンドウに表示されるようにしたい。私はメニューバークラスのすべてのクラスインスタンスオブジェクトを使用しましたが、まだメインウィンドウのすべてを表示することはできません。私はUI形式を使用していません。メニューバーのコンストラクタでQtすべてのクラスオブジェクト(UI要素)を1つのメインウィンドウに表示

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(); 
関連する問題