使用 QT 时遇到的问题及解决办法
Use multi-arg instead [clazy-qstring-arg]
不要使用一连串的arg().arg().arg()
QString("%1 %2").arg(a).arg(b); // BadQString("%1 %2").arg(a, b); // one less temporary heap allocation
Slots named on_foo_bar are error prone [clazy-connect-by-name]
原因:
因为在处理信号-槽
关系时,是通过ui designer
中的Go to slot
让程序自动生成,这种自动生成的弱点就是有一天,在ui designer
中改了控件的名字,但此时编译也不会报错,程序还是正常跑,编译也不提示错误。这样,控件就相当于连不到槽函数上去,就失效了。
解决办法:
不要通过ui designer
的Go to slot
自动生成信号-槽
的连接关系,手动建立该关系即可。
Pass a context object as 3rd connect parameter [clazy-connect-3arg-lambda]
原因:
这是clazy
给的代码质量警告,不是QT
的编译警告。
QLayout: Attempting to add QLayout "" to MainWindow "", which already has a layout.
原因:
因为QMainWindow
中使用布局的时候QMainWindow
默认已经设置过一个布局了,当再设置一个的时候会报错。
解决办法:
// 创建一个QWidget实例QWidget *widget = new QWidget();// 将创建的实例设置为centralWidgetthis->setCentralWidget(widget);// 创建一个主布局QGridLayout *mainLayout = new QGridLayout(this);// 将widget的布局设置为mainLayoutwidget->setLayout(mainLayout);
DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80004005 ()
原因:
文件路径不对或者文件名是中文的