Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将QWinThumbnailToolBar与QMainWindow一起使用_C++_Qt - Fatal编程技术网

C++ 如何将QWinThumbnailToolBar与QMainWindow一起使用

C++ 如何将QWinThumbnailToolBar与QMainWindow一起使用,c++,qt,C++,Qt,我想尝试Qt5.2中的QWinThumbnailToolBar,但它不起作用!(程序运行但没有缩略图!!!!) 我还尝试使用QWidget而不是QMainWindow。。。 如何修复它???您创建QWinThumbnailToolBar的代码是正确的,问题在于您在哪里创建它。我认为在窗口构造函数中创建它是个问题(可能是因为窗口句柄还没有准备好)。你可以这样做: //main.cpp int main(int argc, char *argv[]) { QApplication a(arg

我想尝试Qt5.2中的QWinThumbnailToolBar,但它不起作用!(程序运行但没有缩略图!!!!)

我还尝试使用QWidget而不是QMainWindow。。。
如何修复它???

您创建QWinThumbnailToolBar的代码是正确的,问题在于您在哪里创建它。我认为在窗口构造函数中创建它是个问题(可能是因为窗口句柄还没有准备好)。你可以这样做:

//main.cpp

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

    return a.exec();
}
其中CreateTumbBar()是一个公共函数,您可以在其中创建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);
}

回答晚了,但希望它能帮助以后遇到相同问题的任何人。

尽管@Ramez提出的修复方案有效,但由于windows额外功能,我在应用程序关闭时遇到了崩溃。在析构函数里我需要自己做点什么吗?当
QWinThumbnailToolBarPrivate::hasHandle()检查句柄时,QWindow已被删除

Exception thrown: read access violation.
d was 0xFFFFFFFFFFFFFF7F.
堆栈跟踪如下:

    Qt5Guid.dll!QWindow::handle() Line 1929 C++
    Qt5WinExtrasd.dll!QWinThumbnailToolBarPrivate::hasHandle() Line 460 C++
    Qt5WinExtrasd.dll!QWinThumbnailToolBarPrivate::handle() Line 465    C++
    Qt5WinExtrasd.dll!QWinThumbnailToolBarPrivate::nativeEventFilter(const QByteArray & __formal, void * message, long * result) Line 549   C++
    Qt5Cored.dll!QAbstractEventDispatcher::filterNativeEvent(const QByteArray & eventType, void * message, long * result) Line 484  C++
    [External Code] 
    Qt5Guid.dll!QWindowPrivate::destroy() Line 1914 C++
    Qt5Guid.dll!QWindow::destroy() Line 1864    C++
    Qt5Widgetsd.dll!QWidgetPrivate::deleteTLSysExtra() Line 1891    C++
    Qt5Widgetsd.dll!QWidget::destroy(bool destroyWindow, bool destroySubWindows) Line 12515 C++
    Qt5Widgetsd.dll!QApplication::~QApplication() Line 798  C++

您的代码与文档中的示例非常相似。似乎模块实现或文档都是错误的。
Exception thrown: read access violation.
d was 0xFFFFFFFFFFFFFF7F.
QPlatformWindow *QWindow::handle() const
{
    Q_D(const QWindow);
    return d->platformWindow;
}
    Qt5Guid.dll!QWindow::handle() Line 1929 C++
    Qt5WinExtrasd.dll!QWinThumbnailToolBarPrivate::hasHandle() Line 460 C++
    Qt5WinExtrasd.dll!QWinThumbnailToolBarPrivate::handle() Line 465    C++
    Qt5WinExtrasd.dll!QWinThumbnailToolBarPrivate::nativeEventFilter(const QByteArray & __formal, void * message, long * result) Line 549   C++
    Qt5Cored.dll!QAbstractEventDispatcher::filterNativeEvent(const QByteArray & eventType, void * message, long * result) Line 484  C++
    [External Code] 
    Qt5Guid.dll!QWindowPrivate::destroy() Line 1914 C++
    Qt5Guid.dll!QWindow::destroy() Line 1864    C++
    Qt5Widgetsd.dll!QWidgetPrivate::deleteTLSysExtra() Line 1891    C++
    Qt5Widgetsd.dll!QWidget::destroy(bool destroyWindow, bool destroySubWindows) Line 12515 C++
    Qt5Widgetsd.dll!QApplication::~QApplication() Line 798  C++