找回密码
 立即注册
收起左侧

怎么写当鼠标滑过按钮时,按钮的字样颜色有变化?

19
回复
11001
查看
[复制链接]
累计签到:615 天
连续签到:1 天
来源: 2015-7-3 20:38:25 显示全部楼层 |阅读模式
5Qter豆
如题,网上说的都不是清楚,哪位大神有现成的例子看看

最佳答案

查看完整内容

这个很好做,你可以用qss里面的hover来处理,
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-7-3 20:38:26 显示全部楼层
这个很好做,你可以用qss里面的hover来处理,
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-7-4 09:00:54 显示全部楼层
或者你还可以用mousemoveevent做出更炫的效果,鼠标每移动几个像素字体颜色都改变

点评

可是我重载了mousemoveevent函数,也把setMouseTacking(true)了,可是还是不行,,必须得按下鼠标键才能获取鼠标当前坐标,我想要的是只要鼠标移动到窗口,就可以或得当前坐标  详情 回复 发表于 2015-7-4 15:39
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-7-4 15:39:06 显示全部楼层
sywh 发表于 2015-7-4 09:00
或者你还可以用mousemoveevent做出更炫的效果,鼠标每移动几个像素字体颜色都改变 ...

可是我重载了mousemoveevent函数,也把setMouseTacking(true)了,可是还是不行,,必须得按下鼠标键才能获取鼠标当前坐标,我想要的是只要鼠标移动到窗口,就可以或得当前坐标
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-7-6 17:06:03 显示全部楼层
你是设置了窗体的这个函数setMouseTacking(true)  没设置按钮的这个函数吧

点评

"按钮的这个函数"是什么意思?  详情 回复 发表于 2015-7-7 20:56
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-7-7 20:56:07 显示全部楼层
sywh 发表于 2015-7-6 17:06
你是设置了窗体的这个函数setMouseTacking(true)  没设置按钮的这个函数吧

"按钮的这个函数"是什么意思?

点评

不就是在构造函数里写this->setMouseTacking(true);不就行了吗?  详情 回复 发表于 2015-7-7 21:19
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-7-7 21:19:58 显示全部楼层
qq1043068972 发表于 2015-7-7 20:56
"按钮的这个函数"是什么意思?

不就是在构造函数里写this->setMouseTacking(true);不就行了吗?
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-7-8 09:01:50 显示全部楼层
ui->pushbutton->setMouseTracking 这个样子

点评

ui->pushButton->setMouseTracking(true);一样啊,我两个都设置成true了,还是不行,必须得按下才能得到当前鼠标坐标  详情 回复 发表于 2015-7-8 13:24
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-7-8 13:24:32 显示全部楼层
sywh 发表于 2015-7-8 09:01
ui->pushbutton->setMouseTracking 这个样子

ui->pushButton->setMouseTracking(true);一样啊,我两个都设置成true了,还是不行,必须得按下才能得到当前鼠标坐标
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-7-8 13:38:58 显示全部楼层
贴代码,不知道你怎么操作的。

点评

/*Mainwindow头文件*/ class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); void jisuan(); ~MainWindow(); private slots: void inTimer(  详情 回复 发表于 2015-7-8 21:19
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-7-8 21:19:40 显示全部楼层
sywh 发表于 2015-7-8 13:38
贴代码,不知道你怎么操作的。

/*Mainwindow头文件*/
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    void jisuan();
    ~MainWindow();

private slots:
    void inTimer();
    void on_pushButton_clicked();
    void mouseMoveEvent(QMouseEvent *e);

/*MainWindow.cpp*/

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
   // timer= new QTimer(this);
    connect(timer,SIGNAL(timeout()),this,SLOT(inTimer()));
    this->setMouseTracking(true);
    ui->pushButton->setMouseTracking(true);
}

void MainWindow::mouseMoveEvent(QMouseEvent *e)
{
    qDebug()<<e->x()<<e->y();
}

点评

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // timer= new QTimer(this); connect(timer,SIGNAL(timeout()),this,SLO  详情 回复 发表于 2015-7-10 14:01
嘿。问一个问题,怎么触发tableview的回车事件。情形如下:tableview的第九列可以编辑,编译之后我按下回车就能把进行void save()。现在我用了一个回车事件,但是在编辑这个单元格的时候,需要按下2次回车才能激发信  详情 回复 发表于 2015-7-9 09:16
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-7-9 09:16:34 显示全部楼层
本帖最后由 z55716368 于 2015-7-9 09:17 编辑
qq1043068972 发表于 2015-7-8 21:19
/*Mainwindow头文件*/
class MainWindow : public QMainWindow
{

嘿。问一个问题,怎么触发tableview的回车事件。情形如下:tableview的第九列可以编辑,编辑之后我按下回车就能进行void save()。现在我用了一个回车事件,但是在编辑这个单元格的时候,需要按下2次回车才能执行事件,而在打开这个tableview的时候,我回车也会执行。怎么样才能让仅仅当我在编辑第九列的单元格时按下一次回车才会有save()执行呢?

点评

用QSqlTableModel这个模型就可以了,,亚飞老师书上的数据库操作的例子就很详细了,你看懂了,稍加修改应该能实现你要的效果了  详情 回复 发表于 2015-7-9 11:13
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-7-9 11:13:19 显示全部楼层
z55716368 发表于 2015-7-9 09:16
嘿。问一个问题,怎么触发tableview的回车事件。情形如下:tableview的第九列可以编辑,编辑之后我按下回 ...

用QSqlTableModel这个模型就可以了,,亚飞老师<快速入门>书上的数据库操作的例子就很详细了,你看懂了,稍加修改应该能实现你要的效果了

点评

就是因为没有使用QSqlTableModel 我用的是QStandardItemModel 所以现在在找这种解决方法、  详情 回复 发表于 2015-7-9 11:21
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-7-9 11:21:26 显示全部楼层
qq1043068972 发表于 2015-7-9 11:13
用QSqlTableModel这个模型就可以了,,亚飞老师书上的数据库操作的例子就很详细了,你看懂了,稍加修改应该能 ...

就是因为没有使用QSqlTableModel 我用的是QStandardItemModel
所以现在在找这种解决方法、

点评

噢噢噢,,那我也不太清楚了,,没用过!  详情 回复 发表于 2015-7-9 17:33
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-7-9 17:33:40 显示全部楼层
z55716368 发表于 2015-7-9 11:21
就是因为没有使用QSqlTableModel 我用的是QStandardItemModel
所以现在在找这种解决方法、 ...

噢噢噢,,那我也不太清楚了,,没用过!

点评

好吧 也是悲剧悲剧~~~........  详情 回复 发表于 2015-7-10 08:33
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-7-10 08:33:59 显示全部楼层
qq1043068972 发表于 2015-7-9 17:33
噢噢噢,,那我也不太清楚了,,没用过!

好吧 也是悲剧悲剧~~~........
回复

使用道具 举报

累计签到:595 天
连续签到:1 天
2015-7-10 14:01:24 显示全部楼层
qq1043068972 发表于 2015-7-8 21:19
/*Mainwindow头文件*/
class MainWindow : public QMainWindow
{

MainWindow::MainWindow(QWidget *parent) :
     QMainWindow(parent),
     ui(new Ui::MainWindow)
{
     ui->setupUi(this);
    // timer= new QTimer(this);
     connect(timer,SIGNAL(timeout()),this,SLOT(inTimer()));
//-------------------------------------------------
    this->centralWidget()->setMouseTracking(true);
//----------------------------------------------------add this code,good luck
     this->setMouseTracking(true);
     ui->pushButton->setMouseTracking(true);
}

点评

哥,问题解决了,但是我不知道为啥?现象是这样! 我是有两个窗口:A,B mian.cpp中,A先出现,点了"确定按钮",然后B出现 在B的构造函数函数中写this->centralWidget()->setMouseTracking(true);然后再在main.cpp创建B对象 B  详情 回复 发表于 2015-7-10 18:26
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-7-10 18:26:51 显示全部楼层
sywh 发表于 2015-7-10 14:01
MainWindow::MainWindow(QWidget *parent) :
     QMainWindow(parent),
     ui(new Ui::MainWindow)

哥,问题解决了,但是我不知道为啥?现象是这样!
我是有两个窗口:A,B
mian.cpp中,A先出现,点了"确定按钮",然后B出现
在B的构造函数函数中写this->centralWidget()->setMouseTracking(true);然后再在main.cpp创建B对象
B b;
b.setMouseTracking(true);
这两句话同时有才行,,而且地方还必须这样,两句都写在构造函数里也不行,
必须centralWidget()->setMouseTracking(true);在构造函数中,
setMouseTracking(true);在main.cpp中

这是怎么回事?
回复

使用道具 举报

累计签到:894 天
连续签到:1 天
2015-7-16 16:36:42 显示全部楼层
使用样式表。
像这样。btn->setStyleSheet("QPushButton:hover{#ffffff}");
我这么写,不一定对。

点评

问题解决了,只是用样式表的方式很有限,但是用是事件过滤器是最方便的了,只不过安装的控件一多,效率就不高了  详情 回复 发表于 2015-7-16 19:16
回复

使用道具 举报

累计签到:615 天
连续签到:1 天
2015-7-16 19:16:12 显示全部楼层
Syylc120317 发表于 2015-7-16 16:36
使用样式表。
像这样。btn->setStyleSheet("QPushButton:hover{#ffffff}");
我这么写,不一定对。 ...

问题解决了,只是用样式表的方式很有限,但是用是事件过滤器是最方便的了,只不过安装的控件一多,效率就不高了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了