qt对话框

不倒的土豆 2015-06-01 11:58:15
我用qtcreator创建一个mainwindow程序,在主窗口上添加一个按钮,添加按钮的槽。之后添加一个对话框资源和相应的类。
我想用按钮来弹出对话框,却报错了,按网上的例子不应该啊。
我把按钮的代码贴出来,报错信息也贴出来,希望大侠们指导一下。
代码:
void MainWindow::on_pushButton_clicked()
{
dlg_btn1 *dlg1 = new dlg_btn1;
dlg1->exec();

}

错误信息:
mainwindow.obj:-1: 错误:LNK2019: 无法解析的外部符号
"public: __thiscall dlg_btn1::dlg_btn1(class QWidget *)"
(??0dlg_btn1@@QAE@PAVQWidget@@@Z),该符号在函数
"private: void __thiscall MainWindow::on_pushButton_clicked
(void)" (?on_pushButton_clicked@MainWindow@@AAEXXZ) 中被引用

如果把
   dlg_btn1 *dlg1 = new dlg_btn1;
dlg1->exec();

屏蔽掉程序正常运行的。不知道什么原因。
头文件和源文件都在工程的列表中。求指导
...全文
202 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
不倒的土豆 2015-06-04
  • 打赏
  • 举报
回复
我算是服了,我又用creator重新创建一个工程,步骤完全一样,竟然正常调用了。我详细对比了两个工程,竟然没找到差别
不倒的土豆 2015-06-03
  • 打赏
  • 举报
回复
引用 14 楼 jiqiang01234 的回复:
换个编译器试试
我把这个工程导入到vs2010中是可以用的,也能用按钮打开对话框。 但是qtcreator不行,难道是qtcreator缺少什么东西吗? 想用creator主要是可以直接“转到曹”,而不用想vs一样还要自己做很多工作才可以。 你认为可能是哪的原因呢
jiqiang01234 2015-06-03
  • 打赏
  • 举报
回复
换个编译器试试
不倒的土豆 2015-06-03
  • 打赏
  • 举报
回复
引用 10 楼 lx624909677 的回复:
找到了声明没有找到实现
嗯,确实是这样。但是cpp文件已经加到工程中了。 以前mfc出现这种问题的时候,源文件加上去,就正常了。qt就是不能正常运行
不倒的土豆 2015-06-03
  • 打赏
  • 举报
回复
引用 11 楼 jiqiang01234 的回复:
把dlg_btn1.h和dlg_btn1.cpp的代码贴出来
对话框是新建的,代码如下。 dlg_btn1.h文件:
#ifndef DLG_BTN1_H
#define DLG_BTN1_H

#include <QDialog>

namespace Ui {
class dlg_btn1;
}

class dlg_btn1 : public QDialog
{
    Q_OBJECT
    
public:
    explicit  dlg_btn1(QWidget *parent = 0);
    ~dlg_btn1();
    

private:
    Ui::dlg_btn1 *ui;
};

#endif // DLG_BTN1_H
dlg_btn1.cpp文件:
#include "dlg_btn1.h"
#include "ui_dlg_btn1.h"

dlg_btn1::dlg_btn1(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::dlg_btn1)
{
    ui->setupUi(this);
}

dlg_btn1::~dlg_btn1()
{
    delete ui;
}
jiqiang01234 2015-06-03
  • 打赏
  • 举报
回复
把dlg_btn1.h和dlg_btn1.cpp的代码贴出来
lx624909677 2015-06-03
  • 打赏
  • 举报
回复
找到了声明没有找到实现
不倒的土豆 2015-06-03
  • 打赏
  • 举报
回复
引用 6 楼 fly_dragon_fly 的回复:
[quote=引用 4 楼 XuePiaoFei1 的回复:] [quote=引用 3 楼 fly_dragon_fly 的回复:] 链接错误 , dlg_btn1的cpp没有在工程中
g][/quote]cpp代码贴出来看一下[/quote] main.cpp文件:
#include "mainwindow.h"
#include <QApplication>

#include"dlg_btn1.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    
    return a.exec();
}
mainwindow.h文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    
private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H
mainwindow.cpp文件:
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include"dlg_btn1.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    dlg_btn1 *dlg1 = new dlg_btn1;
    dlg1->exec();

}
按钮单击函数中能正常弹出messagebox的,就是不能调用其他对话框
不倒的土豆 2015-06-03
  • 打赏
  • 举报
回复
引用 7 楼 jiqiang01234 的回复:
还得看.pro工程文件里是不是包含了.cpp文件


pro文件里也有

问题真奇怪了。
其实就是新建一个qt工程,再建一个对话框,用主界面去调用对话框,怎么就不行了呢
fly_dragon_fly 2015-06-02
  • 打赏
  • 举报
回复
链接错误 , dlg_btn1的cpp没有在工程中
jiqiang01234 2015-06-02
  • 打赏
  • 举报
回复
还得看.pro工程文件里是不是包含了.cpp文件
fly_dragon_fly 2015-06-02
  • 打赏
  • 举报
回复
引用 4 楼 XuePiaoFei1 的回复:
[quote=引用 3 楼 fly_dragon_fly 的回复:] 链接错误 , dlg_btn1的cpp没有在工程中
可是那个cpp文件就在qtcreator的源文件列表里啊[/quote]cpp代码贴出来看一下
不倒的土豆 2015-06-02
  • 打赏
  • 举报
回复
引用 2 楼 jiqiang01234 的回复:
dlg_btn1有exec的方法吗?
这个是继承的方法
不倒的土豆 2015-06-02
  • 打赏
  • 举报
回复
引用 3 楼 fly_dragon_fly 的回复:
链接错误 , dlg_btn1的cpp没有在工程中

可是那个cpp文件就在qtcreator的源文件列表里啊
jiqiang01234 2015-06-01
  • 打赏
  • 举报
回复
dlg_btn1有exec的方法吗?
不倒的土豆 2015-06-01
  • 打赏
  • 举报
回复
没人吗?自顶勿沉

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧