2014-01-26 16 views
1

我想嘗試QWinThumbnailToolBar使用Qt 5.2,但它不工作!(程序運行,但沒有縮略圖!!!!)如何使用QWinThumbnailToolBar與QMainWindow的

//main.cpp 
#include "mainwindow.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 

    return a.exec(); 
} 


//mainwindow.h 
#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 
#include <QWinThumbnailToolButton> 
#include <QWinThumbnailToolBar> 

namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    ~MainWindow(); 

private: 
    Ui::MainWindow *ui; 
    QWinThumbnailToolBar* thumbnailToolBar; 
    QWinThumbnailToolButton *playToolButton; 
    QWinThumbnailToolButton *forwardToolButton; 
    QWinThumbnailToolButton *backwardToolButton; 
}; 

#endif // MAINWINDOW_H 


//mainwindow.cpp 
#include "mainwindow.h" 
#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    thumbnailToolBar = new QWinThumbnailToolBar(this); 
    thumbnailToolBar->setWindow(this->windowHandle()); 

    playToolButton = new QWinThumbnailToolButton(thumbnailToolBar); 
    playToolButton->setEnabled(false); 
    playToolButton->setToolTip(tr("true")); 
    playToolButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay)); 

    forwardToolButton = new QWinThumbnailToolButton(thumbnailToolBar); 
    forwardToolButton->setEnabled(true); 
    forwardToolButton->setToolTip(tr("Fast forward")); 
    forwardToolButton->setIcon(style()->standardIcon(QStyle::SP_TrashIcon)); 

    backwardToolButton = new QWinThumbnailToolButton(thumbnailToolBar); 
    backwardToolButton->setEnabled(true); 
    backwardToolButton->setToolTip(tr("Rewind")); 
    backwardToolButton->setIcon(style()->standardIcon(QStyle::SP_MediaSeekBackward)); 

    thumbnailToolBar->addButton(backwardToolButton); 
    thumbnailToolBar->addButton(playToolButton); 
    thumbnailToolBar->addButton(forwardToolButton); 
} 

MainWindow::~MainWindow() 
{ 
    delete ui; 
} 

//pro file : 

QT  += core gui winextras multimedia 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = untitled1 
TEMPLATE = app 


SOURCES += main.cpp\ 
     mainwindow.cpp 

HEADERS += mainwindow.h 

FORMS += mainwindow.ui 

我認爲這個問題是這兩條線段:

thumbnailToolBar = new QWinThumbnailToolBar(this); 
thumbnailToolBar->setWindow(this->windowHandle()); 

我也試過,而不是使用QMainWindow的QWidget的...... 我該如何解決?

+0

您的代碼非常類似於文檔中的示例。看起來無論是模塊實施還是文檔都是錯誤的。 –

回答

1

您的代碼創建QWinThumbnailToolBar是正確的,問題是你創建它的地方。我認爲在窗口構造函數中創建它是問題(也許是因爲窗口句柄尚未準備好)。你可以像這樣:

// main.cpp中

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    FrmMain w; 
    w.show(); 
    w.createThmbBar(); 

    return a.exec(); 
} 

凡createThumbBar()是創建QWinThumbnailToolBar作爲公共職能:

// MainWindow.cpp

void MainWindow::createThmbBar() 
{ 
    thumbnailToolBar = new QWinThumbnailToolBar(this); 
    thumbnailToolBar->setWindow(this->windowHandle()); 

    playToolButton = new QWinThumbnailToolButton(thumbnailToolBar); 
    playToolButton->setEnabled(false); 
    playToolButton->setToolTip(tr("true")); 
    playToolButton->setIcon(style()->standardIcon(QStyle::SP_MediaPlay)); 

    forwardToolButton = new QWinThumbnailToolButton(thumbnailToolBar); 
    forwardToolButton->setEnabled(true); 
    forwardToolButton->setToolTip(tr("Fast forward")); 
    forwardToolButton->setIcon(style()->standardIcon(QStyle::SP_TrashIcon)); 

    backwardToolButton = new QWinThumbnailToolButton(thumbnailToolBar); 
    backwardToolButton->setEnabled(true); 
    backwardToolButton->setToolTip(tr("Rewind")); 
    backwardToolButton->setIcon(style()->standardIcon(QStyle::SP_MediaSeekBackward)); 

    thumbnailToolBar->addButton(backwardToolButton); 
    thumbnailToolBar->addButton(playToolButton); 
    thumbnailToolBar->addButton(forwardToolButton); 
} 

遲到的答案,但希望它可以幫助任何人以後面臨同樣的問題。

相關問題