首页 > 代码库 > QT笔记之VS开发程序遇到的问题

QT笔记之VS开发程序遇到的问题

转载:http://www.cnblogs.com/li-peng/p/3644812.html

转载:http://www.cnblogs.com/csuftzzk/p/VS_Qt_Experience.html

Qt  的窗口部件通过发射信号(signal)来表明一个用户的动作已经发生了或者是一个状态已经改变了。

如点击一个QPushButton时,按钮会发送一个clicked()信号,信号可以与函数(在qt里称做槽slot)相连接

可以把信号理解为c#里的事件

在vs2012里和在Qt Creator里添加信号和槽不一样,这里把两种环境下怎么添加详细说明一下

 

1.在vs2012里添加信号和槽

新建一个qt的项目QtDemo

 技术分享

在qtdeom.h里添加槽

private slots:
         void Btn_OpenClick();

整体代码

 1 #ifndef QTDEMO_H
 2 #define QTDEMO_H
 3 
 4 #include <QtWidgets/QMainWindow>
 5 #include "ui_qtdemo.h"
 6 
 7 class QtDemo : public QMainWindow
 8 {
 9     Q_OBJECT
10 
11 public:
12     QtDemo(QWidget *parent = 0);
13     ~QtDemo();
14 
15 private:
16     Ui::QtDemoClass ui;
17 private slots:
18          void Btn_OpenClick();
19 };
20 
21 #endif // QTDEMO_H

在qtdemo.cpp里添加实现,这里我们只是弹出一个QMessagBox

 1 #include "qtdemo.h"
 2 #include <QMessageBox>
 3 QtDemo::QtDemo(QWidget *parent)
 4     : QMainWindow(parent)
 5 {
 6     ui.setupUi(this);
 7     
 8 }
 9 
10 QtDemo::~QtDemo()
11 {
12 
13 }
14 
15 void QtDemo::Btn_OpenClick()
16 {
17     QMessageBox msg;
18     msg.setText("HelloWord!");
19     msg.exec();
20 }

双击qtdemo.ui打开qt设计师窗体

我们在窗体上放一个PushButton

技术分享

点击编辑信号槽

技术分享

点击PushButton手动红色箭头指向窗体

技术分享

点击QtDemoClass窗口下的编辑打开信号槽窗体点击添加把我们之前写的方法名称加到里边

技术分享

确定关闭后在配置连接窗体下点点击licked()和Btn_OpenClick()后确定

技术分享

点击保存关闭qt设计师窗体

回到vs2012后F5运行

技术分享

2.在Qt里添加信号和槽

打开 Qt Creator新建一个项目MyQtDemo

技术分享

 

点击mainwindow打开设计窗体在窗体上添加一个PushButton

点击右键先把转到槽

技术分享

打开转到槽窗体

技术分享

 

点击clicked()点击确定

在mainwindow.cpp里添加QMesageBox

 1 #include "mainwindow.h"
 2 #include "ui_mainwindow.h"
 3 #include <QMessageBox>
 4 MainWindow::MainWindow(QWidget *parent) :
 5     QMainWindow(parent),
 6     ui(new Ui::MainWindow)
 7 {
 8     ui->setupUi(this);
 9 }
10 
11 MainWindow::~MainWindow()
12 {
13     delete ui;
14 }
15 
16 void MainWindow::on_pushButton_clicked()
17 {
18     QMessageBox msg;
19     msg.setText("Hello Word !");
20     msg.setStandardButtons(QMessageBox::Ok|QMessageBox::Cancel);
21     msg.setDefaultButton(QMessageBox::Cancel);
22     msg.exec();
23 }

运行

技术分享

 

2.用VS编程QT有关网络的Demo时遇到连接错误

技术分享

有关网络的头文件都包含进来了

1 #include <QtNetwork/QTcpServer>//监听套接字
2 #include <QtNetwork/QTcpSocket>//通信套接字

但还是链接错误,应该是相应的库没找到,最后的解决办法是:

技术分享

 

技术分享

QT笔记之VS开发程序遇到的问题