qt信号与槽的几个问题

时间:2020-12-19 17:33:43
问题一:
qt中定义了一个控件,控件上的值可以随着代码内一个变量的改变而改变,也就是显示变量的值?如何编程?
问题二:
qt中定义了多个按钮,当按下一个按钮是他的颜色变为绿色,再点击一次他的颜色变为原背景色,当点击另一个按钮时它的颜色变绿,之前所有按下的按钮变蓝,这样就可以知道最后按下的一个按钮是哪个。


问题三:
qt中按钮文字原来是start,点击一下按钮的字变为starting,再点击一次又变回start,如何编程?
问题四:
在Qt中如何在面板上作出一个文本框?如何设置文本框的大小?如何设置文本框的内容?
期待高手来个详细的解释

7 个解决方案

#1


楼主问的几个问题都差不多,是QT基础的问题。这么多问题估计也没人愿意写源代码了。我是觉得我没这个时间,给你提供个思路吧。
1.你的具体情况我也清楚,假设你的控件是QLabel,你要从一个QTextEdit里获得变量的值,而且随着QLineEdit值得改变来改变QLabel中的值,那么你可以写一个信号和槽,connect(lineEdit,SIGNAL(textChanged(QString)),label,SLOT(setText(QString)));就行了。如果这个变量是从其他地方获取,那么你再写个函数,设置Label的值,每改变一次变量就调用一次这个函数也行。

第二个和第三个问题一起回答,很简单,你写一个槽函数,用一个变量来标记,比如 bool flag = true. if(flag == true)则显示start,if(flag == flase)显示starting。

第四个问题,新建一个文本框对象。QTextEdit.设置大小和文本,自己看帮助手册吧。
学东西不能完全靠别人,要靠自己。你的问题只要自己稍微思考一下你都解决。估计你是才学吧。

#2


click on触发 slot中写你要做的处理响应

比如setText  setIcon 等等

#3


呵呵,楼上的说法有意思,其实,你可以认为自己需要一个事件,当某事发生的时候,就改变什么值,楼上的意思就是建立这个事件,在QT中事件用信号---槽来实现,也就是说,当编辑框发生改变的时候,启动某个处理函数,这个处理函数就去修改某个标签的显示内容,哈哈哈

#4


用信号和槽实现。楼主看看书吧。大都是基础性的东西

#5


第三个和第四个问题都已经解决了,就是按钮的背景颜色还是没有解决。

#6


我这有个类似的


void MyQWidget::nameChange()
{
    if (startButton->text() == tr("开始"))
    {
        startButton->setText(tr("停止"));
    }
    else
    {
        startButton->setText(tr("开始"));
    }
}

#7


第一个问题, 你自己在值改变的地方emit一个自定义signal,然后做个slot函数去处理就完了。
第二个问题,自己写按键响应slot函数。

#1


楼主问的几个问题都差不多,是QT基础的问题。这么多问题估计也没人愿意写源代码了。我是觉得我没这个时间,给你提供个思路吧。
1.你的具体情况我也清楚,假设你的控件是QLabel,你要从一个QTextEdit里获得变量的值,而且随着QLineEdit值得改变来改变QLabel中的值,那么你可以写一个信号和槽,connect(lineEdit,SIGNAL(textChanged(QString)),label,SLOT(setText(QString)));就行了。如果这个变量是从其他地方获取,那么你再写个函数,设置Label的值,每改变一次变量就调用一次这个函数也行。

第二个和第三个问题一起回答,很简单,你写一个槽函数,用一个变量来标记,比如 bool flag = true. if(flag == true)则显示start,if(flag == flase)显示starting。

第四个问题,新建一个文本框对象。QTextEdit.设置大小和文本,自己看帮助手册吧。
学东西不能完全靠别人,要靠自己。你的问题只要自己稍微思考一下你都解决。估计你是才学吧。

#2


click on触发 slot中写你要做的处理响应

比如setText  setIcon 等等

#3


呵呵,楼上的说法有意思,其实,你可以认为自己需要一个事件,当某事发生的时候,就改变什么值,楼上的意思就是建立这个事件,在QT中事件用信号---槽来实现,也就是说,当编辑框发生改变的时候,启动某个处理函数,这个处理函数就去修改某个标签的显示内容,哈哈哈

#4


用信号和槽实现。楼主看看书吧。大都是基础性的东西

#5


第三个和第四个问题都已经解决了,就是按钮的背景颜色还是没有解决。

#6


我这有个类似的


void MyQWidget::nameChange()
{
    if (startButton->text() == tr("开始"))
    {
        startButton->setText(tr("停止"));
    }
    else
    {
        startButton->setText(tr("开始"));
    }
}

#7


第一个问题, 你自己在值改变的地方emit一个自定义signal,然后做个slot函数去处理就完了。
第二个问题,自己写按键响应slot函数。