qt中,我的焦点在一个combobox中,但是只有外面的小虚线。我想让他在焦点处,让我看着明显点。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt中,我的焦点在一个combobox中,但是只有外面的小虚线。我想让他在焦点处,让我看着明显点。相关的知识,希望对你有一定的参考价值。

我需要大神的各种思路,代码更好,连接可可以。看到虚线了吗?太不明显了。我就是想让我选择到这个的时候,一定要明显!!!任何方法都可以!

参考技术A combobox->setStyleSheet("background-color:red"); //焦点背景红色
如果不知道焦点在哪儿
QWidget *haha = qApp->focusWidget();
haha->setStyleSheet("background-color:red");追问

大神,能稍微再指挥点吗。我还是有点没太懂。我现在是combobox的,就是我怎么只让焦点处变色,其他的不变呢?

本回答被提问者和网友采纳
参考技术B checkstate,去助手看看吧

Qt 基于 ComboBox1 改变 ComboBox2

【中文标题】Qt 基于 ComboBox1 改变 ComboBox2【英文标题】:Qt Change ComboBox2 based on ComboBox1 【发布时间】:2016-11-11 23:44:38 【问题描述】:

您好,我是 Qt 场景的新手,我在根据 comboBox1 选择更新我的 comboBox2 时遇到问题。

每次我在 comboBox1 中进行更改时,我的应用程序都会崩溃,说访问冲突。这可能非常简单,但这是我的代码:在这种情况下,最初的 comboBox1 有“汽车”和“食物”。每当我切换到“食物”时,我希望我的 comboBox2 填充项目“鸡蛋”。

知道出了什么问题吗?

ma​​in.h

class main: 

    Q_OBJECT


public:
    main() 

    public slots :

    private slots:
        void onComboBoxIndexChanged();

private:
    QComboBox* comboBox2;  
    void run();
;

ma​​in.cpp

void main::run()

QWidget *w = new QWidget();

QComboBox *comboBox1 = new QComboBox();
QComboBox *comboBox2 = new QComboBox();

comboBox1->addItem("Car");
comboBox1->addItem("Food");

connect(comboBox1, SIGNAL(currentIndexChanged(int)), this, SLOT(onComboBoxIndexChanged()));
...



void main::onComboBoxIndexChanged()

QComboBox* combo = dynamic_cast<QComboBox*>(sender());

if (combo == nullptr)

    return;


comboBox2->addItem("Egg");


【问题讨论】:

您似乎将新的QComboBox 对象分配给run 函数中的局部变量。很可能,您打算将其分配给成员 comboBox2 嘿@Mike 这是一个错字。我实际上分配给comboBox2。你看到代码有问题吗? 【参考方案1】:

你没有正确修正你的错字。我认为有三件事是错误的,我认为第三件事会阻止编译。

首先,main.h 说你的类名是“main”,但在 main.cpp 中,你的类是 WIPGui。显然,这些文件之一不是正确的。我将继续假设您的实际 main.h 文件定义了 WIPGui 类,但其他方面看起来相同。

其次,正如 Mike 试图指出的,在你的 run 函数中,你有这个:

QComboBox *comboBox2 = new QComboBox();

那是在你的“运行”方法中创建一个局部变量;它没有分配给您的类成员变量comboBox2。你想要的是:

comboBox2 = new QComboBox();

第三,您的连接语句不应该根据我们看到的代码进行编译:

connect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onComboBoxIndexChanged()));

此代码中的任何地方都不存在“comboBox”变量。如果您实际上在连接语句中使用了“comboBox1”,但这只是您在此处提供的代码中的另一个错字,那么连接语句就可以了。如果这是按原样剪切和粘贴,那么我看不出它是如何编译的。

假设您在连接语句中使用了“comboBox1”,那么真正的问题是您从未分配给成员变量“comboBox2”,并且当您的插槽尝试使用它时,您会崩溃。

【讨论】:

谢谢!我在代码中有更多的东西,我不得不简化它,因此错字。但第二点成功了:) 迈克是对的。我对本地和类成员变量感到困惑!

以上是关于qt中,我的焦点在一个combobox中,但是只有外面的小虚线。我想让他在焦点处,让我看着明显点。的主要内容,如果未能解决你的问题,请参考以下文章

将焦点放在 WPF ComboBox 上并不总是有效

使下拉类型 Combobox 的行为类似于 Edit 控件

Qt 基于 ComboBox1 改变 ComboBox2

来自数据库的 QT ComboBox ItemData

关于Qt界面的设计(界面衔接)一般做法

如何检测我的应用程序在 Qt 中失去焦点?