关于QT的一个问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于QT的一个问题相关的知识,希望对你有一定的参考价值。

编译的时候出现collect2: ld returned 1 exit status。那是什么会!
这是Complie output Running build steps for project ngui...
Configuration unchanged, skipping qmake step.
Starting: "D:/Qt/2010.05/mingw/bin/mingw32-make.exe" -w
mingw32-make: Entering directory `D:/QT/myexerise/ngui-build-desktop'

D:/Qt/2010.05/mingw/bin/mingw32-make -f Makefile.Debug

mingw32-make[1]: Entering directory `D:/QT/myexerise/ngui-build-desktop'

g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\ngui.exe debug/main.o debug/widget.o debug/mydlg.o debug/moc_widget.o debug/moc_mydlg.o -L"d:\Qt\2010.05\qt\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4

mingw32-make[1]: Leaving directory `D:/QT/myexerise/ngui-build-desktop'

mingw32-make: Leaving directory `D:/QT/myexerise/ngui-build-desktop'

debug/moc_widget.o:D:\QT\myexerise\ngui-build-desktop/debug/moc_widget.cpp:72: undefined reference to `Widget::on_pushButton_clicked()'

collect2: ld returned 1 exit status

mingw32-make[1]: *** [debug\ngui.exe] Error 1

mingw32-make: *** [debug] Error 2

The process "D:/Qt/2010.05/mingw/bin/mingw32-make.exe" exited with code %2.
Error while building project ngui (target: Desktop)
When executing build step 'Make'

第一个问题
如果编译时出现 collect2: ld returned 1 exit status 这种错误,说明当前工程之中有一个已经编译好了的程序在运行,你需要关闭该程序。重新ctrl+R 一次。
第二个问题
从你的编译信息来看,主要需要注意下面这一句
debug/moc_widget.o:D:\QT\myexerise\ngui-build-desktop/debug/moc_widget.cpp:72: undefined reference to `Widget::on_pushButton_clicked()'
这一句编译信息其实是说 Widget::on_pushButton_clicked() 这个槽函数未定义或者未实现,你需要定义并实现on_pushButton_clicked() 这个槽函数。
参考技术A //这么客气都不好意思不回答...
//在button的槽函数中加入以下语句
switch(combobox.currentIndex())

case 0: m_pWnd = new MyWindow1(/*参数*/);//窗口1
break;
case 1: m_pWnd = new MyWindow2(/*参数*/);//窗口2
break;
//todo............

//todo
//显示那个窗体
m_pWnd.show();

/*************************************补充******************************************
我晕,这要看你怎么定义那两个窗口类了,一般都是继承自QWidget或者
QDialog类的,构造方法一般就一个参数QWidget *parent,此时传入this
就可以了。
*************************************************************************************/

关于qt中的QTreeWidget的拖放问题

我在做一个ftp下载的客户端
其中本地目录和远程目录是两个QTreeWidget
我现在要实现拖放功能,以下是两个QTreeWidget的样式
local:
FileA
FIleB
FileC

remoto:
DirA
DirA_1
DirA_2
DirB

当我拖动FileA到DirA上的时候,展开DirA,我现在遇到的问题是,拖到DirA上时没办法获取DirA这个item,
我现在的做法是dragEnterEvent事件触发是connect一个itemEntered的信号,这样鼠标移到DirA上时就可以得到这个item了,
但是运行之后发现,itemEntered信号只有在dropEvent后才会被触发,drag期间并没有触发,大家帮我想想解决方法是什么
谢谢啦
treewidget->setMouseTracking(true)
这个我已经设了,没有

参考技术A void QTreeWidget::itemEntered ( QTreeWidgetItem * item, int column ) [signal]

This signal is emitted when the mouse cursor enters an item over the specified column. QTreeWidget mouse tracking needs to be enabled for this feature to work.
你把treewidget->setMouseTracking(true)试下本回答被提问者采纳
参考技术B 能够把代码贴出来,分享下吗?

以上是关于关于QT的一个问题的主要内容,如果未能解决你的问题,请参考以下文章

请教一个Linux下Qt关于multimedia的问题

关于qt随机值传递给label问题

关于QT中的音频通信问题

关于qt项目的问题

信号和插槽的连接(关于 qlistview) - Qt

关于qt中的QTreeWidget的拖放问题