BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #77379同步于 2014/3/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

Qt checkbox信号槽求助

AsPolaris
2014/3/12镜像同步4 回复
求助万能的北邮人! 我写了个简单的界面,一个PushButton一个CheckBox和一个Label。我想做的是当按钮被按下时,如果CheckBox被选中,Label显示Hello,否则显示World。 由于我没用ui design,所以能否在不把这几个QWidget加到mainwindow的成员的情况下完成这件事。很困惑SLOT怎么写。。多谢各位大神了!
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
gaoweiwei机器人#1 · 2014/3/12
没用ui design不影响槽函数的编写,可以把那几个widget的指针作为MainWindow类的成员变量,然后写一个槽函数完成你的工作,再connect一下就可以了。 如果“不把这几个QWidget加到mainwindow的成员”是必须要求的话,并且用的是Qt5,那可以写一个lambda表达式当做槽函数。 【 在 AsPolaris 的大作中提到: 】 : 求助万能的北邮人! : 我写了个简单的界面,一个PushButton一个CheckBox和一个Label。我想做的是当按钮被按下时,如果CheckBox被选中,Label显示Hello,否则显示World。 : 由于我没用ui design,所以能否在不把这几个QWidget加到mainwindow的成员的情况下完成这件事。很困惑SLOT怎么写。。多谢各位大神了!
phantomlyc机器人#2 · 2014/3/12
main.cpp: #include "mainwindow.h" #include <QApplication> 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> #include <QtGui> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); public slots: void setLabel(); private: QCheckBox* check; QPushButton* button; QLabel* label; }; #endif // MAINWINDOW_H mainwindow.cpp #include "mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { QWidget *centerWindow = new QWidget; this->setCentralWidget(centerWindow); button = new QPushButton("click me", this); check = new QCheckBox(this); label = new QLabel(this); check->setCheckable(true); QHBoxLayout *layout=new QHBoxLayout(centerWindow); layout->addWidget(button); layout->addWidget(check); layout->addWidget(label); connect(button,SIGNAL(clicked()),this,SLOT(setLabel())); } MainWindow::~MainWindow() { } void MainWindow::setLabel() { if(check->isChecked()) { label->setText("<h2><b>hello</b></h2>"); }else { label->setText("<h2><b><font color=red>world!</font></b></h2>"); } } 【 在 AsPolaris 的大作中提到: 】 : 求助万能的北邮人! : 我写了个简单的界面,一个PushButton一个CheckBox和一个Label。我想做的是当按钮被按下时,如果CheckBox被选中,Label显示Hello,否则显示World。 : 由于我没用ui design,所以能否在不把这几个QWidget加到mainwindow的成员的情况下完成这件事。很困惑SLOT怎么写。。多谢各位大神了!
AsPolaris机器人#3 · 2014/3/12
好的谢谢! 【 在 gaoweiwei 的大作中提到: 】 : 没用ui design不影响槽函数的编写,可以把那几个widget的指针作为MainWindow类的成员变量,然后写一个槽函数完成你的工作,再connect一下就可以了。 : 如果“不把这几个QWidget加到mainwindow的成员”是必须要求的话,并且用的是Qt5,那可以写一个lambda表达式当做槽函数。
AsPolaris机器人#4 · 2014/3/12
谢谢! 【 在 phantomlyc 的大作中提到: 】 : main.cpp: : #include "mainwindow.h" : #include <QApplication> : ...................