信號(hào)與槽(SIGNAL-SLOT)

一携丁、系統(tǒng)設(shè)置槽-信號(hào)

  • 在QtCreator中建立槽信號(hào)事件

槽的建立(添加Button)

注意:我們的文件ui_zbtx.h是編譯環(huán)境(VS及其插件QtCreator)產(chǎn)生的描述程序(類(lèi)似QtCreator(Xcode)自動(dòng)布局產(chǎn)生控件)

  • 設(shè)置槽事件
//.h
public slots:
   void on_btn_addpara_click();
   void on_btn_delpara_click();
   void on_btn_save_clicked();

  • 設(shè)置信號(hào)事件
//.cpp
void zbtx::on_btn_addpara_click()
{
    ParaSetting dlg;
    if (dlg.exec() == QDialog::Accepted)
    {
        int row = ui.tbl_paras->rowCount();
        ui.tbl_paras->insertRow(row);
        QTableWidgetItem* it = new QTableWidgetItem;
        //it->setText(dlg.name);
        it->setText(dlg.sign);
        ui.tbl_paras->setItem(row, 0, it);
        it = new QTableWidgetItem;
        //it->setText(dlg.typ == 1 ? tr("data") : tr("sub indicator"));
        it->setText(dlg.typ == 1 ?QStringLiteral("數(shù)據(jù)") : QStringLiteral("子指標(biāo)"));
        it->setData(Qt::UserRole, dlg.typ);
        ui.tbl_paras->setItem(row, 1, it);
        it = new QTableWidgetItem;
        it->setText(dlg.ch);
        ui.tbl_paras->setItem(row, 2, it);
        /*it = new QTableWidgetItem;
        it->setText(QString::number(dlg.id));
        ui.tbl_paras->setItem(row, 3, it);*/
    }

}
void zbtx::on_btn_delpara_clicked(){
    ui.tbl_paras->removeRow(ui.tbl_paras->currentRow());

}
槽信號(hào)事件

二、自定義槽信號(hào)事件

  • 設(shè)置對(duì)應(yīng)的槽信號(hào)事件


    on_tree_zhibiao_customContextMenuRequested
on_tree_zhibiao_currentItemChanged
  • 設(shè)置槽事件
//.h
public slots:
   void on_tree_zhibiao_currentItemChanged(QTreeWidgetItem * current, QTreeWidgetItem * previous);//修改Tree Item 
   void on_btn_modify_zb_clicked();//應(yīng)用
   void on_tree_zhibiao_customContextMenuRequested(const QPoint & pos);//tree Item 右選擇鍵 操作
  • 設(shè)置信號(hào)事件
//.cpp
void zbtx::on_tree_zhibiao_customContextMenuRequested(const QPoint & pos)
{

    QTreeWidgetItem * current = ui.tree_zhibiao->currentItem();
    if (!current)
        return;
    int ntyp = current->data(0, Qt::UserRole).toInt();

    QMenu menu;
        if (ntyp == 0)//
    {
         //建立槽SLOT(add_zb_sub_level())  【兩次槽-信號(hào)的建立】
        menu.addAction(QStringLiteral("添加子指標(biāo)"), this, SLOT(add_zb_sub_level()));//添加子指標(biāo)
        menu.addAction(QStringLiteral("刪除指標(biāo)"), this, SLOT(delete_zb()));//刪除指標(biāo)
    }
        menu.exec(QCursor::pos());
}

void zbtx::add_zb_sub_level()
{
    QTreeWidgetItem * current = ui.tree_zhibiao->currentItem();
    if (!current)
        return;
    QTreeWidgetItem* it = new QTreeWidgetItem;
    it->setText(0, QStringLiteral("添加子指標(biāo)"));
    it->setData(0, Qt::UserRole-1, g_zb_id++);//id
    it->setData(0, Qt::UserRole, 0);//indicator
    current->addChild(it);
    current->setExpanded(true);
}
void zbtx::delete_zb()
{
    QTreeWidgetItem * current = ui.tree_zhibiao->currentItem();
    if (!current)
        return;
    if (!current->parent())
        return;
    ui.tree_zhibiao->clearSelection();
    current->parent()->removeChild(current);
}

一掖举、系統(tǒng)自定義槽信號(hào)[改]

在項(xiàng)目中,場(chǎng)景SceCreator.h中,我們的評(píng)估方案中

//.h
private:

    void connectSlots();         //連接signals-slots


private slots:


    void on_newEval_clicked();  //評(píng)估指標(biāo) 新建方案

實(shí)現(xiàn)槽信號(hào)

//.cpp
void CSceCreator::connectSlots()
{
//評(píng)估方案管理
    connect(ui.newEval,   SIGNAL(clicked()),    this,   SLOT(on_newEval_clicked()));//注:ui.newEval 為QtCreator中 控件button的命名 name



}

實(shí)現(xiàn)槽函數(shù)

void CSceCreator::on_newEval_clicked()
{
    m_zb_doc.clear();
    m_evalIndDock->new_plan();
}

備注:

  1. 針對(duì)QLineEdit名秀、QTextEidt等輸入框 信息的保存
//彈出的屬性設(shè)置對(duì)話框(QDialog)
void ParaSetting::accept()
{
    typ = ui.comb_typ->currentIndex() + 1;
    ch = ui.le_ch->text();
    sign = ui.le_sign->text();
    //name = ui.comb_para->currentText();
    //id = ui.comb_para->itemData(ui.comb_para->currentIndex(), 0).toInt();
    QDialog::accept();
}
  1. 關(guān)于每個(gè)控件對(duì)應(yīng)的槽信號(hào) 怎么去區(qū)分與響應(yīng)
//在QtCreator創(chuàng)建槽信號(hào)(Edit Signal/Slots)
//ui_zbtx.h

QObject::connect(btn_addpara, SIGNAL(clicked()), zbtx, SLOT(on_btn_addpara_click()));
QObject::connect(btn_delpara, SIGNAL(clicked()), zbtx, SLOT(on_btn_delpara_clicked()));
QObject::connect(btn_save, SIGNAL(clicked()), zbtx, SLOT(on_btn_save_clicked()));

QMetaObject::connectSlotsByName(zbtx);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市巾表,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌考阱,老刑警劉巖鞠苟,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件当娱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡跨细,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)云头,“玉大人,你說(shuō)我怎么就攤上這事匣砖』璧危” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵拂共,是天一觀的道長(zhǎng)姻几。 經(jīng)常有香客問(wèn)我势告,道長(zhǎng)抚恒,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮混萝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瓮恭。我一直安慰自己厘熟,他們只是感情好维哈,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著飘庄,像睡著了一般购撼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碾盐,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天揩局,我揣著相機(jī)與錄音,去河邊找鬼付枫。 笑死驰怎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的掂榔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼莲趣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼饱溢!你這毒婦竟也來(lái)了绩郎?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浊竟,沒(méi)想到半個(gè)月后津畸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肉拓,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡暖途,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了露久。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芋浮。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖镇草,靈堂內(nèi)的尸體忽然破棺而出瘤旨,到底是詐尸還是另有隱情,我是刑警寧澤存哲,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布七婴,位于F島的核電站察滑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏户盯。R本人自食惡果不足惜饲化,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硫眨。 院中可真熱鬧巢块,春花似錦、人聲如沸族奢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至掺涛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秧廉,已是汗流浹背拣帽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工减拭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拧粪。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像魄鸦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子旺罢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容