离开后再回原来的公司合适吗?

作者回顾了自己从一家公司离职并尝试创业的经历,面对创业艰难及未来的不确定性,考虑回归原公司的复杂心情。

❣️

好马不吃回头草的意思是?| 第159篇

640?wx_fmt=jpeg

640?wx_fmt=gif

昨天晚上,请上一个公司的领导和两位同事吃了一顿饭。

吃饭的目的很单纯,想必你闭上眼也能猜得到。

首先,缓解一下之前离职时和领导的一些误会;

其次,打探一下是否还有回去工作的可能性;

最后,和之前的同事畅谈一下心声:回忆往日的峥嵘岁月,感慨如今的茫然失措,憧憬未来的光辉前景。

为什么会有这样的举动呢?

三年前,我从上一个公司出来,跟着现在的老板闯天下,曾以为凭借我们俩的努力就会有发财的机会。

三年后,我们俩还在任性的坚持着,但心里都明白,两三个月内再无法盈利就必须散伙了。

你能想象一个公司三年不盈利是一个怎么样的处境吗?

四个字来形容的话就是——如履薄冰。

我很佩服老板的坚韧,在没有盈利的情况下还能坚持给我发工资,于情于理他都是我应该感谢的人。

但我已经29了,也要为自己的未来打算,程序员毕竟是一个吃青春饭的职业,留给我的时间已经不多了。

我已经厌倦这样的工作了,一个人设计产品、一个人写代码、一个人测试、一个人运维、一个人修改bug。

顺便提一句,刷马桶也是工作的一项任务。

尽管这样的工作给我了很大的自由,每天可以10点到办公室,下午6点就回家,周末双休,甚至现在给你们写这篇文章,但自由的同时意味着孤独。

孤独,有时候可以摧毁一个人对未来的希望

真希望能早一点解脱啊!

我内心不止一次的呼喊着:要么赶紧签一单,来点收入!要么就赶紧彻底地失败!

活在死亡与重生的边界线,实在令人痛不欲生。

这就好像,一个声音拽着你大喊:再坚持一下,否则你会后悔的!

而另一个声音抚摸着你的后背,轻轻地说:要不放弃吧,不要做无谓的挣扎了。

(想一下《魔戒》里的那个咕噜,精神分裂有多么的痛苦)

也许你要问,为什么非要回上一个公司呢?

第一,我在那里曾留下过美好的记忆。

和部分同事、上级领导、人事经理,以及公司老板都相处融洽。

有一年的年会上,由于喝得比较high,老板还和我亲了嘴。

注:老板是个男的。

也许这有点荒唐,甚至不认识我的人还说我是流氓。

但有一点是可以肯定的,大家的关系还说得过去。

第二,暂时没有其他合适的公司可以去。

洛阳的工资水平就那样,去哪都差不多。

这,真是一个可悲的事实。

第三,离家近。

上下班都可以走路去,锻炼身体的同时,可以更方便照顾家庭。

这一点,对于成为女儿奴的我来说,还是蛮重要的。

那你可能会追问,当初为什么非要离开呢?

是啊,从事后诸葛亮的角度来看,我当初确实没有必要非要离开。

在团队里拿着相对较高的工资和绩效,再混个两三年,说不定也能升个一官半职。

况且,领导对我也非常信任。

我曾比喻他为我的藤野先生。

但就当时的情景来看,走的原因大致如下:

第一,当时软件开发部的重心在.net上,而我负责的是Java。

谁能料到现在重心转到了Java上,真是造化弄人啊!

第二,当时一心想着出来发大财。

虽然创业的风险系数很高,但相比较安定的工作,我内心更向往创业发财,以此来提升我的生活品质,以及满足我对金钱的欲望。

第三,现在的老板对我的思想工作做得很成功。

三年前那会要买房结婚,他借给了我四万块,解决了我的燃眉之急。

俗话说滴水之恩,当涌泉相报啊。

当你理解了我为什么离开的缘由后,你也许会感兴趣地继续问我:饭桌上和领导聊得怎么样?

马马虎虎吧。

领导对我当初的离开应该是释怀了(从我个人的视点来看)。

另外,软件开发部的确还需要人才。

不过,回去后能拿多少薪水,担任什么职位,这都没谈,毕竟好长时间没联系了。

先缓解缓解感情是第一步。

说实话,饭桌上喝点酒,对谈话的氛围有着很大的帮助。

酒精能够缓解人们尴尬的情绪,提升人们谈话的情趣。

最后呢,希望我的书稿能够顺利出版,这对我以后的职业生涯还是有很大帮助的。

心底默默地再祈祷一下吧!

640?wx_fmt=png

<think>我们面临的问题是:在QMenu的hovered信号中修改QAction的图标,导致该菜单项的hover样式(如背景色)失效。 根据之前的讨论,直接设置图标会干扰Qt的样式系统,因为样式系统在绘制菜单项时,如果检测到有图标设置,可能会覆盖默认的hover状态绘制。 解决方案的核心思路: 1. 避免在hovered信号中直接修改图标,而是通过其他方式实现图标切换效果(如使用样式表设置不同状态下的图标)。 2. 如果必须动态修改图标,则需要在修改后强制菜单项重绘,以恢复hover状态。 参考引用[1]中提到,我们可以通过设置Qt应用程序属性来控制图标和快捷键的显示,但这与我们的问题关系不大。 参考引用[2]和[3]提到了QMenu的信号(包括hovered和triggered)以及如何连接动作。但并没有直接解决我们的问题。 结合之前的成功经验,我们提供以下两种解决方案: 方案一:使用样式表设置不同状态下的图标 这是最推荐的方法,因为样式表可以自然地处理不同状态(如正常、悬停、选中)的样式,不会破坏Qt原有的状态管理。 方案二:在修改图标后强制更新菜单项 如果由于某些原因必须使用hovered信号来修改图标,那么我们在设置图标后立即强制菜单更新,以恢复hover状态。 下面分别详细说明: ### 方案一:使用样式表设置不同状态下的图标 我们可以为QMenu设置样式表,为菜单项的不同状态指定不同的背景图片(图标)。这样就不需要在hovered信号中动态修改图标了。 步骤: 1. 准备两种图标:正常状态和悬停状态。 2. 通过样式表为菜单项设置正常状态图标,为悬停状态(:selected)设置悬停状态图标。 示例代码: ```cpp // 设置菜单样式表 m_displayScreenMenu->setStyleSheet( "QMenu::item {" " background-image: url(:/icons/normal_icon.png);" // 正常状态图标 " background-position: left center;" " background-repeat: no-repeat;" " padding-left: 20px;" // 留出图标位置 "}" "QMenu::item:selected {" " background-image: url(:/icons/hover_icon.png);" // 悬停状态图标 "}" ); ``` 注意:这里使用了`:selected`伪状态来表示菜单项的悬停状态。在QMenu中,当鼠标悬停在菜单项上时,该菜单项会被认为是“selected”(选中)状态。 优点:完全由样式表控制,不会破坏hover状态。 ### 方案二:强制更新菜单项 如果必须使用hovered信号来修改图标,则可以在设置图标后强制菜单重绘。 示例代码: ```cpp connect(m_displayScreenMenu, &QMenu::hovered, this, [=](QAction *action) { // 修改图标 action->setIcon(QIcon(":/icons/hover_icon.png")); // 强制菜单重绘(通过异步调用,确保在事件循环中重绘) QTimer::singleShot(0, this, [=]{ m_displayScreenMenu->update(); }); }); ``` 但是,这种方法有一个问题:当鼠标移开时,我们需要将图标恢复为正常状态。我们可以通过连接QMenu的aboutToHide信号来恢复所有图标,或者在hovered信号中遍历所有动作来恢复非当前动作的图标。 更完整的处理: ```cpp // 在类中存储当前悬停的动作 QAction* m_lastHoveredAction = nullptr; connect(m_displayScreenMenu, &QMenu::hovered, this, [=](QAction *action) { // 如果之前有悬停的动作,恢复其图标 if (m_lastHoveredAction && m_lastHoveredAction != action) { m_lastHoveredAction->setIcon(QIcon(":/icons/normal_icon.png")); } // 设置当前动作的悬停图标 action->setIcon(QIcon(":/icons/hover_icon.png")); m_lastHoveredAction = action; // 强制更新 QTimer::singleShot(0, this, [=]{ m_displayScreenMenu->update(); }); }); // 当菜单隐藏时,恢复所有动作的图标 connect(m_displayScreenMenu, &QMenu::aboutToHide, this, [=]{ for (QAction* action : m_displayScreenMenu->actions()) { action->setIcon(QIcon(":/icons/normal_icon.png")); } m_lastHoveredAction = nullptr; }); ``` 注意:这种方法在菜单项很多时可能会有性能问题,因为每次悬停都会设置图标并更新整个菜单。 ### 总结 推荐使用方案一(样式表)来解决这个问题,因为它更符合Qt的样式机制,且性能更好。如果图标需要根据每个动作动态变化,则可以在添加动作时设置每个动作的样式表(但注意,每个动作的样式表设置可能会比较繁琐)。 如果由于某些原因不能使用样式表(比如图标需要根据动作的不同而不同),那么可以采用方案二,但要注意性能优化和恢复逻辑。 另外,还可以考虑使用代理样式(QProxyStyle)来自定义绘制,但这相对复杂一些。 请根据实际需求选择合适的方法。 §§相关问题§§ 1. 如何为QMenu的不同动作设置不同的图标? 2. 如何让QMenu的图标大小统一? 3. QMenu的样式表如何设置才能不影响其他菜单? 4. 如何实现QMenu的异步加载(避免菜单项过多导致界面卡顿)?</think># Qt QMenu悬停图标设置导致样式失效的解决方案 ## 问题分析 当在`QMenu::hovered`信号中动态设置QAction图标时,会导致hover样式失效。这是因为Qt的样式系统在图标更新后没有正确刷新样式状态,导致hover状态丢失[^1][^3]。 以下是两种可靠的解决方案: ### 方案一:使用样式表统一管理图标状态(推荐) ```cpp // 设置菜单样式表 m_displayScreenMenu->setStyleSheet( "QMenu::item {" " padding: 5px 25px 5px 30px;" // 左侧留出图标空间 " background-position: left center;" " background-repeat: no-repeat;" " background-origin: content;" "}" "QMenu::item:selected {" // 注意:Qt菜单悬停状态实际是:selected " background-color: #2A82DD;" // 悬停背景色 " color: white;" " background-image: url(:/icons/hover_icon.png);" // 悬停图标 "}" "QMenu::item:hover:!selected {" " background-color: #E6F0FA;" // 非选中状态悬停 "}" ); ``` ### 方案二:强制重绘菜单项 ```cpp connect(m_displayScreenMenu, &QMenu::hovered, this, [=](QAction *action){ // 设置新图标 action->setIcon(QIcon(":/icons/hover_icon.png")); // 强制菜单重绘(解决样式失效问题) QTimer::singleShot(0, this, [=]{ m_displayScreenMenu->update(); }); // 鼠标移开时恢复原始图标 connect(m_displayScreenMenu, &QMenu::aboutToHide, this, [=]{ action->setIcon(QIcon(":/icons/normal_icon.png")); }, Qt::SingleShotConnection); }); ``` ## 关键原理说明 1. **样式优先级**:Qt样式系统优先级为 `QStyle > 样式表 > 动态修改`[^1],直接设置图标会覆盖样式表效果 2. **状态管理**:Qt菜单的悬停状态实际上是`:selected`伪状态[^2],而非`:hover` 3. **渲染时机**:`hovered`信号触发后需强制刷新才能正确渲染样式 4. **图标尺寸**:通过自定义样式类统一控制图标大小,避免尺寸不一致问题[^3] ## 相关问题 ### 如何为不同QAction设置不同悬停图标? ```cpp // 创建图标映射表 QMap<QString, QPair<QIcon, QIcon>> actionIcons = { {"Action1", {QIcon(":/icons/action1_normal.png"), QIcon(":/icons/action1_hover.png")}}, {"Action2", {QIcon(":/icons/action2_normal.png"), QIcon(":/icons/action2_hover.png")}} }; connect(m_displayScreenMenu, &QMenu::hovered, this, [=](QAction *action){ if(actionIcons.contains(action->text())) { action->setIcon(actionIcons[action->text()].second); m_displayScreenMenu->update(); // 立即重绘 } }); connect(m_displayScreenMenu, &QMenu::aboutToHide, this, [=]{ for(QAction* action : m_displayScreenMenu->actions()) { if(actionIcons.contains(action->text())) { action->setIcon(actionIcons[action->text()].first); } } }); ``` ### 如何解决菜单项图标大小不一致问题? ```cpp // 自定义代理样式控制图标大小 class MenuIconStyle : public QProxyStyle { public: using QProxyStyle::QProxyStyle; int pixelMetric(PixelMetric metric, const QStyleOption* option, const QWidget* widget) const override { if (metric == PM_SmallIconSize) return 24; // 统一图标大小 return QProxyStyle::pixelMetric(metric, option, widget); } }; // 应用自定义样式 m_displayScreenMenu->setStyle(new MenuIconStyle(m_displayScreenMenu->style())); ``` ### 如何避免样式表影响其他菜单? ```cpp // 为特定菜单设置对象名 m_displayScreenMenu->setObjectName("displayScreenMenu"); // 在样式表中指定对象名 qApp->setStyleSheet( "QMenu#displayScreenMenu::item:selected {" " background-color: #2A82DD;" " color: white;" "}" ); ``` 通过以上方法,您可以解决QMenu悬停图标设置导致的样式失效问题,同时保持菜单的视觉一致性和响应性[^1][^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉默王二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值