C++ 如何将QWinThumbnailToolBar与QMainWindow一起使用
我想尝试Qt5.2中的QWinThumbnailToolBar,但它不起作用!(程序运行但没有缩略图!!!!) 我还尝试使用QWidget而不是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
如何修复它???您创建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++