gpt4 book ai didi

c++ - 如何将 QRadioButton 连接到 QTabWidget?

转载 作者:行者123 更新时间:2023-11-28 03:56:03 26 4
gpt4 key购买 nike

我正在使用 C++ 和 QT 创建一个软件,我有两个小部件,一个是 QRadioButon 类型,一个是 QTabWidget。我的需求是我想从广播按钮发送信号,并且我希望每当检查按钮时,标签的内容都会更改。谁能建议怎么做?我尝试创建我的小部件类的槽,在那个槽中我调用了选项卡类的构造函数,但问题是构造函数没有被调用。这是我正在使用的代码..

#include <QtGui>
#include "v_lab.h"

v_lab::v_lab(QWidget *parent)
: QDialog(parent)
{
setWindowTitle("Virtual Lab");
maingroup=new QGroupBox(this);
maingroup->setTitle("Algorithms");
maingroup->setMinimumWidth(200);
maingroup->setMaximumWidth(240);
maingroup->setFlat(false);
p=new QPalette;
p->setColor(QPalette::Background,QColor(233,212,102));
setPalette(*p);

box=new QGroupBox(maingroup);
box->setFlat(false);
box->setTitle("Searching Algorithm");

linear_search=new QRadioButton("Linear Search",box);
linear_search->setChecked(1);
binary_search=new QRadioButton("Binary Search",box);

box1=new QGroupBox(maingroup);
box1->setFlat(false);
box1->setTitle("Sorting Algorithms");

bubble_sort=new QRadioButton("Bubble Sort",box1);
selection_sort=new QRadioButton("Selection Sort",box1);

box2=new QGroupBox(maingroup);
box2->setFlat(false);
box2->setTitle("Tree Algorithms");

infix_traversal=new QRadioButton("Infix Traversal",box2);
prefix_traversal=new QRadioButton("Prefix Traversal",box2);
postfix_traversal=new QRadioButton("Postfix Traversal",box2);

box3=new QGroupBox(maingroup);
box3->setFlat(false);
box3->setTitle("Graph Algorithms");

bfs=new QRadioButton("BFS",box3);

dfs=new QRadioButton("DFS",box3);
shortest_path=new QRadioButton("Shortest Path",box3);

QString string1="go to hell";
tab=new QTabWidget;
tab->addTab(new algorithm(string1),"Algorithm");
// tab->addTab(new psudo_code(),"Pseduo-Code");
tab->setMinimumWidth(250);
tab->setMaximumWidth(400);

//Layout
mainlayout=new QHBoxLayout(this);
mainlayout->addWidget(maingroup);

mainlayout->addWidget(tab);
mainlayout->addStretch();
main_left_pane_layout=new QVBoxLayout(maingroup);

main_left_pane_layout->addWidget(box);
main_left_pane_layout->addWidget(box1);
main_left_pane_layout->addWidget(box2);
main_left_pane_layout->addWidget(box3);

left_pane_box=new QVBoxLayout(box);

left_pane_box->addWidget(linear_search);
left_pane_box->addWidget(binary_search);

left_pane_box1=new QVBoxLayout(box1);

left_pane_box1->addWidget(bubble_sort);
left_pane_box1->addWidget(selection_sort);

left_pane_box2=new QVBoxLayout(box2);

left_pane_box2->addWidget(infix_traversal);
left_pane_box2->addWidget(prefix_traversal);
left_pane_box2->addWidget(postfix_traversal);

left_pane_box3=new QVBoxLayout(box3);

left_pane_box3->addWidget(bfs);
left_pane_box3->addWidget(dfs);
left_pane_box3->addWidget(shortest_path);

connect(binary_search,SIGNAL(clicked()),this,SLOT(peeyush()));
}

algorithm::algorithm(const QString &string,QWidget *parent)
: QWidget(parent)
{
label=new QLabel(string);
main_layout=new QVBoxLayout;
main_layout->addWidget(label);
main_layout->addStretch();
setLayout(main_layout);
}

/*
psudo_code::psudo_code(QWidget *parent)
: QWidget(parent)
{
label1=new QLabel("Hello Peeyush Chandel");
main_layout1=new QVBoxLayout;
main_layout1->addWidget(label1);
main_layout1->addStretch();
setLayout(main_layout1);
}
*/

void v_lab::peeyush()
{
QString string1="new string";
algorithm obj(string1);
//exit(1);
}

最佳答案

在你的 v_lab 类的头定义文件中你应该有这样的东西:

// Includes here.

class v_lab: public QDialog
{
Q_OBJECT // VERY important!

public:
// Other things here.

private slots: // VERY important. You can use public slots too.
void peeyush();
}

而且您不能将信号连接到构造函数。

关于c++ - 如何将 QRadioButton 连接到 QTabWidget?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3609790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com