clicked信號 qt 發送者專題及常見問題 - CSDN

2021-01-10 CSDN技術社區

基本概念信號和槽

QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );

在兩個Qt對象(直接或間接繼承QObject對象的對象)中建立了一種單向的連接。每一個Qt對象都有signals(發送消息)和slots(接收消息)。所有窗口部件都是Qt對象。它們繼承QWidget,而QWidget繼承QObject。
這裡quit的clicked()信號和a的quit()連接起來了,所以當這個按鈕被按下的時候,這個程序就退出了。

學習資料QT教程第三章

//#include "ex_ch1.h"//#include <QtWidgets/QApplication>#include <qpushbutton.h>#include <qfont.h>#include <qboxlayout.h>#include<qapplication.h>int main(int argc, char *argv[]){ QApplication a(argc, argv); //ex_ch1 w; //w.show(); QWidget window; window.resize(200,120); QVBoxLayout layout; QPushButton quit("Quit",&window); quit.setFont(QFont("Times",18,QFont::Bold)); QObject::connect(&quit,SIGNAL(clicked()),&a,SLOT(quit())); layout.addWidget(&quit); window.setLayout(&layout); window.show(); return a.exec();}

效果:

Qt 第四章使用窗口插件

#include<qapplication.h>#include<qpushbutton.h>#include<qfont.h>class MyWidget: public QWidget{public: MyWidget(QWidget *parent=0, const char *name=0);};MyWidget::MyWidget(QWidget *parent, const char *name){ setMinimumSize(200, 120); setMaximumSize(400, 1200); QPushButton *quit = new QPushButton("Quit", this); //QPushButton *quit = new QPushButton(QIcon("Quit"), this, "quit"); quit->setGeometry(62, 40, 75, 30); quit->setFont(QFont("Times", 18, QFont::Bold)); QPushButton *ui = new QPushButton("UI", this); ui->setGeometry(100, 100, 100, 100); ui->setFont(QFont("Times", 20, QFont::Bold)); connect(quit, SIGNAL(clicked()), quit, SLOT(quit()));}int main(int argc, char *argv[]){ QApplication a(argc, argv); //ex_ch4 w; //w.show(); MyWidget w; w.setGeometry(100, 100, 200, 120); w.show(); return a.exec();}

展示

第五章:組裝積木

#include <qapplication.h>#include <qpushbutton.h>#include <qslider.h>#include <qlcdnumber.h>#include <qfont.h>#include <QVBoxLayout>int main( int argc, char **argv ){ QApplication a( argc, argv ); QWidget window; QPushButton *quit = new QPushButton( "Quit", &window ); quit->setFont( QFont( "Times", 18, QFont::Bold ) ); QObject::connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) ); QLCDNumber *lcd = new QLCDNumber( 2, &window ); QSlider * slider = new QSlider( Qt::Horizontal, &window ); slider->setRange( 0, 99 ); slider->setValue( 0 ); QObject::connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) ); QVBoxLayout layout; layout.addWidget(quit); layout.addWidget(lcd); layout.addWidget(slider); window.setLayout(&layout); window.show(); return a.exec();}

第六章 組裝豐富的積木

#include<qapplication.h>#include<qpushbutton.h>#include<qslider.h>#include<qlcdnumber.h>#include<qfont.h>#include<qboxlayout.h>#include<qgridlayout.h>class LCDRange:public QWidget{public: LCDRange(QWidget *parent=0, Qt::WindowFlags f=0);};LCDRange::LCDRange(QWidget *parent, Qt::WindowFlags f):QWidget(parent, f){ QLCDNumber *lcd = new QLCDNumber(2); QSlider *slider = new QSlider(Qt::Horizontal); slider->setRange(0, 99); slider->setValue(0); connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int))); QVBoxLayout* layout = new QVBoxLayout; layout->addWidget(lcd); layout->addWidget(slider); setLayout(layout);}class MyWidget:public QWidget{public: MyWidget(QWidget *parent=0, Qt::WindowFlags f=0);};MyWidget::MyWidget(QWidget *parent, Qt::WindowFlags f):QWidget(parent, f){ QVBoxLayout *layout = new QVBoxLayout; QPushButton *quit = new QPushButton("Quit"); quit->setFont(QFont("Times", 18, QFont::Bold)); connect(quit, SIGNAL(clicked()), qApp, SLOT(quit())); QGridLayout *grid = new QGridLayout; for (int r = 0; r < 4; r++) { for (int c = 0; c < 5; c++) { grid->addWidget(new LCDRange(this), r, c); } } layout->addWidget(quit); layout->addLayout(grid); setLayout(layout);}int main(int argc, char **argv){ QApplication a(argc, argv); MyWidget w; w.resize(600, 100); w.show(); return a.exec();}

展示

第七章:一個事物領導另一個

main.cpp

//#include "ex_ch6.h"//#include <QtWidgets/QApplication>#include<qapplication.h>#include<qpushbutton.h>#include<qslider.h>#include<qlcdnumber.h>#include<qfont.h>#include<qboxlayout.h>#include<qgridlayout.h>#include<lcdrange.h>class MyWidget:public QWidget{public: MyWidget(QWidget *parent=0, Qt::WindowFlags f=0);};MyWidget::MyWidget(QWidget *parent, Qt::WindowFlags f):QWidget(parent, f){ QVBoxLayout *layout = new QVBoxLayout; QPushButton *quit = new QPushButton("Quit"); quit->setFont(QFont("Times", 18, QFont::Bold)); connect(quit, SIGNAL(clicked()), qApp, SLOT(quit())); QGridLayout *grid = new QGridLayout; LCDRange *previous = 0; for (int r = 0; r < 4; r++) { for (int c = 0; c < 5; c++) { LCDRange *lr = new LCDRange(this); grid->addWidget(lr, r, c); if (previous) { connect(lr, SIGNAL(valueChanged(int)), previous, SLOT(setValue(int))); } previous = lr; } } layout->addWidget(quit); layout->addLayout(grid); setLayout(layout);}int main(int argc, char **argv){ QApplication a(argc, argv); MyWidget w; w.resize(600, 100); w.show(); return a.exec();}

lcdrange.h

#ifndef LCDRANGE_H#define LCDRANGE_H#include<qboxlayout.h>#include<qwidget.h>#include<qslider.h>#include<qlcdnumber.h>class QSlider;class LCDRange:public QWidget{ Q_OBJECTpublic: LCDRange(QWidget *parent=0, Qt::WindowFlags=0); int value() const;public slots: void setValue(int);signals: void valueChanged(int);private: QSlider *slider;};#endif

lcdrange.cpp

#include "lcdrange.h"LCDRange::LCDRange(QWidget *parent, Qt::WindowFlags f):QWidget(parent, f){ QLCDNumber *lcd = new QLCDNumber(2); QSlider *slider = new QSlider(Qt::Horizontal); slider->setRange(0, 99); slider->setValue(0); connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int))); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(lcd); layout->addWidget(slider); setLayout(layout);}int LCDRange::value() const{ return slider->value();}void LCDRange::setValue(int value){ slider->setValue(value);}

效果

第八章:準備戰鬥幾個需要注意的問題在qt5.x中#include <qvbox.h>變成了#include <qboxlayout.h>

相關焦點

  • qt信號槽傳遞指針 - CSDN
    Qt4的槽函數必須使用slots關鍵字聲明,而Qt5中已經不再需要了,槽函數可以是任何能和信號關聯的成員函數。2. Qt4指定信號函數和槽函數需用SIGNAL和SLOT宏,它們的功能是將參數轉換為const char*類型。而Qt5中傳遞的是信號函數和槽函數的指針。3.
  • qt布局控制項 - CSDN
    Qt基本控制項及三大布局來源: http://blog.csdn.net/a2604539133/article/details/73920696Qt基本模塊一、Qt的三大布局QHBoxLayout:水平顯示布局,所有在其上面擺放的控制項只能水平排列下去;
  • 回歸模型eviews專題及常見問題 - CSDN
    門限變量qt和解釋變量Xt、Zt的特徵決定了門限函數的類型。如果qt是yt的d期滯後值,則稱為自激勵(SE)模型;如果門限變量不是被解釋變量的滯後變量,則為一般的門限回歸(TR)模型。如果解釋變量Xt、Zt中僅包含截距項和滯後的被解釋變量,則表示自回歸(AR)模型。
  • 卡方檢驗結果分析專題及常見問題 - CSDN
    簡單統計之後,得到總數和死亡率:此處需要使用到ggbarstats函數,其參數可謂是非常的多,詳細的參數表我放在另一個博客中了,有興趣的朋友可以去看看(https://blog.csdn.net/m0_45248682/article/details/104086729)。
  • matlab語音信號採集程序專題及常見問題 - CSDN
    1、語音信號的採集1.1題目要求使用windows下的錄音機錄製一段語音信號、音樂信號或者採用其他軟體截取一段音樂信號(要求:時間不超過5s,文件格式為WAV。)① 請每位同學都參與錄音,內容自定。② 使用wavread語句讀取語音/音樂信號獲取抽樣率;(注意:讀取的信號是雙聲道信號,即為雙列向量,需要分列處理);③ 輸出時域語音/音樂信號的波形。④ 實現對錄音信號的聲音大小的調節。⑤ 實現對兩種語音/音樂信號的混音音效。⑥ 實現音樂信號的回音音效。
  • f檢驗 matlab專題及常見問題 - CSDN
    15.71985 15.91986 15.71987 16.71988 15.31989 16.11990 16.2MATLAB實現參考網上多個代碼可得https://www.ilovematlab.cn/thread-246993-1-1.htmlhttps://blog.csdn.net
  • android啟動頁設計專題及常見問題 - CSDN
    轉載請註明出處:http://blog.csdn.net/wangjihuanghun/article/details/63255144啟動頁幾乎成為了每個app的標配,有些商家在啟動頁中增加了開屏廣告以此帶來更多的收入。
  • r語言一元回歸模型專題及常見問題 - CSDN
    sd(ki)是參數的標準差,可以使用summary(sol.lm)$coefficients[,2]直接讀取,代碼如下:df<-sol.lm$df.residualalpha=0.05left<-summary(sol.lm)$coefficients[,1]-summary(sol.lm)$coefficients[,2]*qt(1-alpha
  • 卡方檢驗相關性專題及常見問題 - CSDN
    那麼有一個問題:協方差數值大小是否代表了相關程度呢?也就是說如果協方差為 100 是否一定比協方差為 10 的正相關性強呢?假如X1、Y1 和 X2、Y2 分別聯合分布圖,如下所示:考察兩個變量的相關關係,首先得看清楚兩個變量都是什麼類型的,統計分析中常見的變量類型有連續型數值變量,無序分類變量、有序分類變量:連續型數值變量:如銷售額、氣溫、工資收入、考試成績;無序分類變量:如性別男和女,血型種類;有序分類變量:如學歷水平小學、初中、高中
  • c++ 槽函數專題及常見問題 - CSDN
    它是一種函數回調機制,當一個信號關聯了多個槽時,信號發出,這些槽將會被調用,當然,也可以僅僅關聯一個槽函數。其實Qt也提供了它自己的信號和槽機制,那個是非常的靈活和好用的,但是它依賴於Qt的框架,所以退而求其次,選擇了Boost提供了signals2;signals2庫位於命名空間boost::signals2中,為了使用它,需要包含頭文件<boost/signals2.hpp>;信號(Signal)signal
  • QT 技術應用常用問題解答
    另外,還有一個更快的方法,在原始碼解開後有一個目錄translations,下面有一些.ts, .qm文件,我們拷貝一個:Quote:cp src/translations/qt_untranslated.ts .
  • arduino設置串口模式專題及常見問題 - CSDN
    模擬信號輸入解析度: analogSetWidth(bit);bit的值範圍90~511100~1023110~204712(默認)0~40956. 模擬信號輸出 (基於LEDC)LEDC是基於PWM調製實現模擬輸出的.與arduino uno主板不同, ESP32的PWM模擬是一個個通道 共16個, 通道可以映射到引腳上.
  • 方差檢驗專題及常見問題 - CSDN
    5 問題總結無
  • 數位訊號攜帶消息的信號參量取值 - CSDN
    即通信的雙方都可以發送消息,但不能雙方同時發送3.雙向同時通信(全雙工通信)即通信的雙方可以同時發送和接收消息來自信源的信號常稱為基帶信號(基本頻帶信號)基帶信號往往包含有較多的低頻成分,甚至還有直流成分,而許多信道並不能傳輸這種低頻分量或直流分量,為了解決這一問題,就必須對系帶信號進行調製(modulation)僅僅對基帶信號的波形進行變換,
  • bootstrap 有統計圖專題及常見問題 - CSDN
    這種模式還常見於評分系統的分數分布。
  • 擬合優度專題及常見問題 - CSDN
    即:回到擬合優度的問題上,我們就容易理解,當所有樣本點都落在回歸線上時,回歸方程的擬合優度一定是最高的。此時,y的SST只包含SSR部分,沒有SSE。由此可知,在y的SST中,如果SSR所佔比例遠大於SSE所佔比例,換句話說,就是回歸方程如果能夠解釋的變差所佔比例較大,那麼,這個回歸方程的擬合優度就高。
  • pc端的rem布局專題及常見問題 - CSDN
    子元素的float、clear和vertical-align屬性將失效flex布局又叫伸縮布局、彈性布局、伸縮布局、彈性盒子布局採用flex布局的元素稱為flex容器(flex container)簡稱容器,它的所有子元素自動成為容器成員,稱為(flex item)「項目」總之:就是通過給父盒子添加flex屬性,來控制盒子的位置和排列方式父項常見屬性
  • arduino 低功耗模式專題及常見問題 - CSDN
    如果你聽到GATT這個名詞,就可以將其想成使用BLE,這沒什麼問題。由於與傳統藍牙不兼容,在主機端,和藍牙3.0合併做為雙模,實現成兩者都可以使用的情況比較多。3. BLE藍牙架構圖(了解)最上面綠色的部分是應用層,主要是gatt和att我們可以把它看作是同一層。sm是安全管理層,負責管理安全。
  • 嵌入式Linux用Qt Designer快速開發
    從Sender列表中選擇quitPushButton,從Signal列表中選擇clicked(),從Receiver列表中選擇cfconvMainFrom,從Slot列表中選擇close()。用戶可以參見圖9所示。
  • 垂直行業雲計算專題及常見問題 - CSDN
    北京某三甲醫院用的就是這樣的一個服務,解決了安全問題。至於計算能力和存儲能力,這是我們雲廠商的強項,所以當把安全的問題解決之後,我們可以幫他們很大的忙,隨時擴充計算資源問:針對服務性能,從醫院的操作來說,也就是將從科研與臨床方面逐步實現上雲?