1. 程式人生 > >QT 類與視窗之間的訊號槽連線

QT 類與視窗之間的訊號槽連線

此文章用來回憶內容

         一開始本來是想用QT類直接編寫視窗的控制元件,結果發現只能在主UI裡面控制,百度以後發現需要利用訊號槽,花了許多時間終於知道如何用訊號槽把類與視窗連線起來。

1.類需要繼承QOBJECT,

2.在類裡寫出訊號,列如 

signals:
voidxinxi(QStringa);
這個不需要寫出來就當是一個啟用函式。
3.在窗口裡面寫出接受函式 列如
privateslots:
voidxianshi(QStringa);
並寫出函式具體功能。
4.寫出具體連線的
connect(&g,SIGNAL(xinxi(QString)),this,SLOT(xianshi(QString
)));
5.如果出現什麼 QT error: undefined reference to vtable for "xxx::xxx" 什麼東西,這個時候需要重新編譯qmake,直接在QTcreater點選執行qmake。
6.生成一個按鈕,轉到槽點選事件,裡面寫
emitg.xinxi("xxxx");
這樣才會引發訊號槽的事件。
下面是程式
ceshi.h
#ifndefCESHI_H
#defineCESHI_H
#include<QObject>
classceshi:publicQObject
{
Q_OBJECT
signals:
voidxinxi(QStringa);
public:
ceshi
();
};
#endif//CESHI_H
mainwindow.h
#ifndefMAINWINDOW_H
#defineMAINWINDOW_H
#include"ceshi.h"
#include<QMainWindow>
#include<QDebug>
namespaceUi{
classMainWindow;
}
classMainWindow:publicQMainWindow
{
Q_OBJECT
public:
explicitMainWindow(QWidget*parent=0);
~MainWindow();
ceshig;
privateslots:
voidxianshi(QString
a);
voidon_pushButton_clicked();
private:
Ui::MainWindow*ui;
};
#endif//MAINWINDOW_H
mainwindow.cpp
#include"mainwindow.h"
#include"ui_mainwindow.h"
MainWindow::MainWindow(QWidget*parent):
QMainWindow(parent),
ui(newUi::MainWindow)
{
connect(&g,SIGNAL(xinxi(QString)),this,SLOT(xianshi(QString)));
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
deleteui;
}
voidMainWindow::xianshi(QStringa)
{
qDebug()<<a;
}
voidMainWindow::on_pushButton_clicked()
{
emitg.xinxi("asdfqwer");
}

相關推薦

QT 視窗之間訊號連線

此文章用來回憶內容          一開始本來是想用QT類直接編寫視窗的控制元件,結果發現只能在主UI裡面控制,百度以後發現需要利用訊號槽,花了許多時間終於知道如何用訊號槽把類與視窗連線起來。 1.類需要繼承QOBJECT, 2.在類裡寫出訊號,列如  signals:

視窗之間使用訊號 訊號連線方式

今天在 tablewidget中寫了個委託。 想實現 點選委託中的editor(一個button),在主視窗能夠顯示選單。 一開始就想到了訊號槽機制,但是問題在於 button 是 委託中的,沒法直接與主視窗進行connect。 後來發現,是自己訊號槽沒學好

JQ中 :not .not 偽方法之間的選擇

$('#news tr:nth-child(even)').addClass('alt'); 與 $('#news').find('tr:nth-child(even)').addClass('alt'); 是一樣的結果, 有時候使用.not() 方法而不是 :not 選擇

介面之間關係、介面介面之間關係、面向物件三大特徵之多型

一、類與介面之間關係: 實現關係。 1、類與介面要注意的事項: 1)重點內容非抽象類實現一個介面時,必須要把介面中所有方法全部實現。 2)抽象類實現一個介面時,可以實現也可以不實現介面中的 方法。 3)一個類可以實現多個介面 。 2、疑問: java為

githubgit之間怎麼建立連線

git是一款強大的分散式版本控制系統。與之對應的是集中式版本控制系統,例如SVN。看一下區別:集中式(代表作:SVN):多臺電腦連線一個主機,修改東西之後推到一個主機。分散式(代表作:git):每臺電腦上都有一個專案,改完之後推到主機上方便成員互動。集中式的假如網速很慢,那你

抽象介面之間的關係

/*老師和學生案例,加入抽菸的額外功能分析:從具體到抽象老師:姓名,年齡,吃飯,睡覺學生:姓名,年齡,吃飯,睡覺由於有共性功能,我們提取出一個父類,人類。人類:姓名,年齡吃飯();睡覺(){}抽菸的額外功能不是人或者老師,或者學生一開始就應該具備的,所以,我們把它定義為介面

Qt數字字串之間的相互轉換

把QString轉換為 double型別 方法1.QString str="123.45"; double val=str.toDouble(); //val=123.45 方法2.很適合科學計數法形式轉換 bool ok; double d; d=QString("123

unity開發:Qt C++unity之間TCP網路通訊

考慮實現用C++做伺服器,unity做客戶端實現TCP網路通訊。 以下采用TCP單執行緒連線。 Qt C++服務端 建立一個Qt的GUI專案,在介面上放一個label顯示連線狀態,兩個button作為指令傳送控制。 記得在pro檔案中加入network模組 widget

QT多執行緒中,物件訊號連線不上的解決辦法

1、在接收者建立執行緒中,把接收者移動到主執行緒中: pReceiverObj->moveToThread(QApplication::instance()->thread()); 2、這樣傳送訊號的時候,就會在主執行緒事件佇列處理中來處理了。 把connect的最

pyqt4不同類之間訊號進行連線

這個部落格是自己在使用pyqt4過程中,解決具體的總結,僅供個人備忘。 不同類之間訊號與槽的對應,需要三個步驟: 1)在類A裡定義發射訊號,使用emit()方法,發射訊號A_signal(); 2)在類B裡定義槽函式B_slot(); 3)在主函式main()裡,使用

QT GUI(主)執行緒子執行緒之間的通訊——使用跨執行緒的訊號

在主執行緒上,可以控制子執行緒啟動,停止,清零 如果子執行緒啟動的話,每一秒鐘會向主執行緒傳送一個數字,讓主執行緒更新介面上的數字。 程式截圖: 上程式碼: #include <QtGui>     #include <QtCore>    #include <w

C++模板Qt信號混用

tar com get 信號 obi template blog blank emp 參考:https://www.cnblogs.com/csuftzzk/p/qt_mix_with_template.html http://mobile.51cto.com/symbia

QT學習記錄1(訊號

使用,學習QT的背景 剛入職新公司,工作是嵌入式軟體,工作內容包括使用QT進行一些軟體的開發等,以前沒有接觸過QT,特意建立第一篇部落格,用作QT的學習過程記錄 入職後,公司前輩要求使用QT寫一個軟體,接收硬體裝置傳回的資料並顯示,同時軟體可以對裝置的工作方式進行設定,使用TCP通訊協議。

Qt訊號連線失敗原因及解決辦法

有時候程式編譯成功了,但是connect並沒有將訊號和槽連線起來。Qt訊號和槽連線失敗原因主要有以下幾點: 槽函式並沒有宣告在類的public slots(或private slots或protected slots)裡,因

通過c++11的std::bind及std::function實現方法的回撥,模擬Qt實現訊號

c++11引入了std::bind及std::function,實現了函式的儲存和繫結,即先將可呼叫的物件儲存起來,在需要的時候再呼叫。網上有很多介紹。 Qt訊號槽實現訊號的傳送和接收,類似觀察者。簡單說明: sender:發出訊號的物件 signal:傳送物件

qt訊號斷開連線

在qt中使用訊號槽時,有時會想中途斷開訊號槽的連線,接下來將呈現四種連線斷開方法: one:斷開明確指定接受物件訊號槽,如果連線斷開成功返回true,否則返回false bool QObject::disconnect(const QObject *sender, con

訊號連線方式(同步和非同步)

事先宣告:此篇部落格非完全原創 一. 同步 synchronous.h #ifndef SYNC_H #define SYNC_H #include <QObject> #include <QDebug> class MyT

Qt 5 最新訊號連線方式以及Lambda表示式

最近學習Qt,發現新大陸,這裡做下記錄。主要內容就是原始Qt4的訊號槽連線方式,以及Qt5新版的連線方式,還有件事簡單演示一下lambda表示式的使用方式程式碼如下/* * 作者:張建偉 * 時間:

Qt Quick 事件處理之訊號

    前面兩篇文章《QML 語言基礎》和《Qt Quick 簡單教程》中我們介紹了 QML 語言的基本語法和 Qt Quick 的常見元素,親們,通過這兩篇文章,您應該已經可以完成簡單的 Qt Quick 應用了。接下來呢,哈,我們要介紹 Qt Quick 中一個灰常灰常重

Qt中的中訊號非同步呼叫

Qt中使用訊號-槽機制處理跨物件之間的呼叫,該機制的好處有: 1. 使得呼叫關係的繫結和解除十分靈活,不必修改類成員函式程式碼 2. 在不暴露更多全域性變數的情況下實現跨名稱空間呼叫 3. 可以多個訊號對應多個槽,也可以訊號之間繫結,對應於GUI中的邏輯很