QT中button的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT中button的问题相关的知识,希望对你有一定的参考价值。

在QT中在一个框中,有很多Button,当点击一个按键Button,系统从哪个函数可以直接找到这个键啊,帮帮忙
QButtonGroup *bg;
QPushButton *btn[90];
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)

ui->setupUi(this);
bg = new QButtonGroup;//按钮组
connect(bg,SIGNAL(buttonClicked(int)),this,SLOT(allButtonPointSlot(int)));

int i;

for(i = 0;i < 90;i++) //初始化所有button,并增加到button group里,实现多按钮共享一个槽函数的功能
btn[i] = new QPushButton;
btn[i]->setMaximumSize(5,5);//按钮大小
//btn[i]->setMinimumSize(2,2);
btn[i]->setFlat(true);

bg->addButton(btn[i],i);//添加按钮到按钮组




void MainWindow::allButtonPointSlot(int i)

this->ui->btn[i]->setText(QApplication::translate("MainWindow", "qt", 0, QApplication::UnicodeUTF8));


MainWindow::~MainWindow()

delete ui;

这样在Window.cpp中怎么实现不了啊?

我现在使实现的是三十个按钮,所以不能都这样啊

参考技术A bg = new QButtonGroup;//按钮组
connect(bg,SIGNAL(buttonClicked(int)),this,SLOT(allButtonPointSlot(int)));
for(i = 0;i < 90;i++) //初始化所有button,并增加到button group里,实现多按钮共享一个槽函数的功能
btn[i] = new MyButton;
btn[i]->setMaximumSize(BtnW,BtnH);//按钮大小
btn[i]->setMinimumSize(BtnW,BtnH);
btn[i]->setFlat(true);

bg->addButton(btn[i],i);//添加按钮到按钮组
本回答被提问者采纳
参考技术B 每一个控件都有一个object的名字,和一个标题。
当一个控件生成时,qt就自动create了一个该类的对象,对象名就是object name 当你触发这个控件时 也就qt就会找到这个控件的objct name 来确定是动作。

显示一个不同的名字???在说清楚点啊,如果你是要点击一个按钮然后调用out(QPushiButton *)输出该按钮的名称,然后再点击其他按钮同样调用out(QPushiButton *)输出名字的话那就好办了。
参考技术C 手动写solt和signal,然后调用不同的函数就可以了
比如Button1,Button2,构造里面写

connect(Button1,SIGNAL(clicked()),this,SOLT(fun1()));
connect(Button2,SIGNAL(clicked()),this,SOLT(fun2()));
就可以知道你点的是哪个按钮了。

建议改成控件数组试试,不用QButtonGroup.
参考技术D 找个应该是按钮事件触发的吧,找那个事件代码就行了,Button都是以事件的形式操作的

qt中buttons()与button()的区别

有好几个类中有buttons()和button(),不知道你指的是不是鼠标事件

Qt::MouseButton QMouseEvent::button () const
返回产生事件的按钮,鼠标move事件总是返回 Qt::NoButton

Qt::MouseButtons QMouseEvent::buttons () const

返回产生事件的按钮状态。 按钮状态是Qt::LeftButton, Qt::RightButton, Qt::MidButton的或运算组合。对于鼠标move事件,函数返回当前按下的所有按钮。对于鼠标按下或双击事件,返回导致事件发生的按钮。对于鼠标释放事件,不包含导致事件发生的按钮。追问

就是对事件不是很了解,在click事件中用的是button(),在move事件中用的是buttons(),不能通用吗

追答

假设你的鼠标左键已经按下。
如果移动鼠标,会发生的move事件,button返回Qt::NoButton,buttons返回LeftButton。
再按下了右键,会发生press事件,button返回RightButton,buttons返回LeftButton|RightButton
再移动鼠标,会发生move事件,button返回Qt::NoButton,buttons返回LeftButton|RightButton
再松开左键,会发生Release事件,button返回LeftButton,buttons返回RightButton
也就是说,button返回“那个按钮发生了此事件”,buttons返回"发生事件时哪些按钮还处于按下状态"

参考技术A   qt中对于buttons()与button()的官方介绍如下
  Qt::MouseButton QMouseEvent::button () const
  返回产生事件的按钮;
  Qt::MouseButtons QMouseEvent::buttons () const
  返回产生事件的按钮状态;
  前者是鼠标move事件总是返回 Qt::NoButton,后者函数返回当前按下的所有按钮。
参考技术B The QToolButton class provides a quick-access button to commands or options, usually used inside a QToolBar.
A
tool button is a special button that provides quick-access to specific
commands or options. As opposed to a normal command button, a tool
button usually doesn't show a text label, but shows an icon instead.追问

Qt::MouseButton QMouseEvent::button()和Qt::MouseButtons QMouseEvent::buttons ()

以上是关于QT中button的问题的主要内容,如果未能解决你的问题,请参考以下文章

Qt中,想写一个按钮button,想让它的名字改变。需要怎么写?

Qt新手,请问如何控制button的文字

Qt 设置button互斥,一组button只能选中一个

用 Qt实现三个窗口,一个label,两个button,

qt里如何给button添加背景图片

Qt如何在循环中更新GUI