阳光好青年 发表于 2023-10-17 09:42

QT编写的软件思路求助

本帖最后由 阳光好青年 于 2023-10-17 11:24 编辑

一个QT写的软件,我想去除一些界面,让软件看起更清爽,如删去红框内两个“qtabwidget”控件



根据qt API ,应该是我追出来8个 函数进去add的界面
ebx:public: int __thiscall QTabWidget::addTab(class QWidget *, class QIcon const &, class QString const &)



我的思路是 nop 掉call addTab的函数,但是整个程序就崩溃了。
应该怎么做呢?

阳光好青年 发表于 2023-10-17 12:59

结束了。
最后还是nop大法,把call前入栈传参的全部nop掉了。

ghui 发表于 2023-10-17 10:35

本帖最后由 ghui 于 2023-10-17 10:37 编辑

阳光好青年 发表于 2023-10-17 10:03
编写方法可能不同,我看官网应该有个使能界面的函数得调用一下。
如:ui->tabWidget->setTabEnabled(0,...
addTab后tab默认就是使能的,一般不会用到你这个函数ui->tabWidget->setTabEnabled(0, true);

void QTabWidget::setTabVisible(int index, bool visible)If visible is true, the page at position index is visible; otherwise the page at position index is hidden. The page's tab is redrawn appropriately.This function was introduced in Qt 5.15.See also isTabVisible().

阳光好青年 发表于 2023-10-17 10:03

ghui 发表于 2023-10-17 09:55
后面是不是还有访问这个tab的地方

tab->widget(int index)

编写方法可能不同,我看官网应该有个使能界面的函数得调用一下。
如:ui->tabWidget->setTabEnabled(0, true);
追函数符号没看到,还在研究。

ghui 发表于 2023-10-17 09:55

后面是不是还有访问这个tab的地方

tab->widget(int index)

only998 发表于 2023-10-17 10:10

我觉得应该考虑隐藏,或者不可用控件,不建议删除控件,因为你不知道那里可能用到这个指针,会导致崩溃。

WUXING_TIANCHEN 发表于 2023-10-17 10:28


ui.tab->hideTab(0);找指针调函数

JuncoJet 发表于 2023-10-17 10:48

{:1_927:}
回复有钱拿
nop注意栈的平衡

44018723 发表于 2023-10-17 11:02

disable 是最靠谱的,后续肯定继续使用了。
如果想要完美,通过QSS把最后两个tab宽度设置为0,这样最符合你的需求。

Hmily 发表于 2023-10-17 11:17

禁止回复奖励,修改掉。

阳光好青年 发表于 2023-10-17 11:24

JuncoJet 发表于 2023-10-17 10:48
回复有钱拿
nop注意栈的平衡

谢谢,我参考:https://blog.51cto.com/h2appy/1564887
栈平衡 add esp,0xC
但提示指令大一字节,然后强行改还是崩
页: [1] 2
查看完整版本: QT编写的软件思路求助