没有成员命名 'setResizeMode' in 'QHeaderView' - 转换 Qt 4.7 为 Qt 5.8



我需要将QT遗产代码从4.7转换为5.8 ,我在QT Creator 4.2.1 Clang 7.0(Apple)64bit中有一个汇编错误。

查看.cpp文件

#include "frmMainTableView_UI.h"
#include <QHeaderView>
void frmMainTableView_UI::setupUI(const QMap<int, QString> &columnNames_, bool hasRowLabels_, QWidget *parent_)
{
    widget = new QWidget(parent_);
    layout = new QVBoxLayout(widget);
    layout->setSpacing(0);
    layout->setMargin(1);
    frmMainToolbar_UI::setupUI(columnNames_, widget);
    tableSplitter = new QSplitter(widget);
    table = new mpiTableView(hasRowLabels_, widget);
    tableCopy = new QShortcut(Qt::CTRL + Qt::Key_C, table);
    if (!hasRowLabels_)
        table->verticalHeader()->hide();
    table->setSelectionMode(QAbstractItemView::ExtendedSelection);
    table->setSelectionBehavior(QAbstractItemView::SelectRows);
    table->setAlternatingRowColors(true);
    table->horizontalHeader()->setHighlightSections(false);
    table->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);  // Error convert Qt4 to Qt5 ??
    table->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);  // Error convert Qt4 to Qt5  ??
    tableSplitter->addWidget(table);
    tableSplitter->setStretchFactor(0, 3);
    layout->addWidget(toolbar);
    layout->addWidget(tableSplitter);
}

.cpp中的2个错误

在文件中包含在../src/ui/frmmaintableview_ui.cpp:1:../src/ui/frmmaintableview_ui.h:21:18:警告:'frmmaintableview_ui :: setupui'hid hide'hid hide offloaded虚拟函数 Virtual Void Setupui(const qmap&amp; columnNames_,bool hasrowlabels_,qwidget *parent_ = 0); ^

../src/ui/frmmaintoolbar_ui.h:31:18:注意:隐藏的过载虚拟函数'frmmaintoolbar_ui :: setupui :: setupui'在这里声明:不同的参数数量(2 vs 3) Virtual void Setupui(const qmap&amp; columnNames_,qwidget *parent_ = 0); ^

../src/ui/frmmaintableview_ui.cpp:24:30:错误:in'qheaderview'in'qheaderview' no no nosem no n ement'setResizemode';;您的意思是" sectionResizemode"? table-> verticalheader() -> setResizemode(qheaderview :: resizetocontents);//JDL错误将QT4转换为QT5 ?? ^~~~~~~~~~~~~ SectionResizeMode/Users/john/qt/5.8/clang_64/lib/qtwidgets.framework/headers/qheaderview.h:133:16:注意:'SectionResizemode'在此处声明 RESIZEMODE sectionResizemode(int logicalIndex)const; ^

../src/ui/frmmaintableview_ui.cpp:25:32:错误:in qheaderview'in'qheaderview' no notem no成员名为" setResizemode";您的意思是" sectionResizemode"? Table-> hixontalheader() -> setResizemode(qheaderview :: resizetocontents);//JDL错误将QT4转换为QT5 ?? ^~~~~~~~~~~~~ SectionResizeMode/Users/john/qt/5.8/clang_64/lib/qtwidgets.framework/headers/qheaderview.h:133:16:注意:'SectionResizemode'在此处声明 RESIZEMODE sectionResizemode(int logicalIndex)const; ^

1个警告和2个错误生成制作:*** [frmmaintableview_ui.o]错误118:29:48:该过程"/usr/bin/make"由代码2退出。构建/部署项目mypersonalindex时的错误(套件:桌面QT 5.8.0 clang 64bit)执行步骤时" make"

提到的QT5文档 Qheaderview的过时成员Qheaderview类的以下成员已过时。提供它们以保持旧的源代码工作。我们强烈建议不要在新代码中使用它们。

(过时)void setResizemode(Resizemode模式)

我的C 技能非常有限,您是否看到可以将其从QT4转换为QT5的任何次要调整。...那么替代品是什么?

我想你需要替换两个过时的行:

table->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);  
table->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents); 

使用以下QT 5代码:

table->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); 
table->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); 

请参阅文档。

相关内容

  • 没有找到相关文章

最新更新