Я использую QtabWidget в создателе Qt и создал три вкладки (вкладка 1, вкладка 2, вкладка 3). Каждая вкладка имеет около 30 полей. Теперь, когда я запускаю приложение первоначально было бы на вкладке 1. В настоящее время все данные, отображаемые на всех трех вкладках, вытягиваются сразу. Есть ли способ, когда пользователь нажимает на Tab-2, тогда данные, соответствующие tab-2, загружаются и одинаковы для tab-3. Я ищу некоторые функции, такие как «onTabClick». Я проверил слоты, связанные с виджетами вкладки, и не смог найти их.Как загрузить данные на вкладке щелчок в qt creator
Код для моей формы в Qt:
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <ctime>
#include <iostream>
#include <QPixmap>
#include <stdio.h>
#include <QProcess>
#include <QString>
#include <QPainter>
#include <QPen>
#include <QBrush>
#include <QLabel>
#include <QTimer>
#include <ctime>
using namespace std;
void MainWindow::onTabChanged(int tabIndex) {
cout<<"the tab index is:"<<tabIndex<<endl;
if (tabIndex == 0) {
// Create the first tab elements
cout<<"tab 0"<<endl;
} else if (tabIndex == 1) {
// ...
cout<<"tab 1"<<endl;
}
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
time_t now = time(0);
char* dt = ctime(&now);
ui->setupUi(this);
this->setWindowTitle("First Qt Project");
connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(onTabChanged(int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void onTabChanged(int tabIndex);
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
Я добавил файл mainwindow.cpp, который у меня есть в моем проекте. Я только начал использовать создателя Qt, и я не уверен, где мне нужно внести изменения. Не могли бы вы дать мне знать, как я могу это сделать. – Valla
Я смог добавить код в свой файл и добавить слот в мой файл mainwindow.h. Но функция не вызывается на вкладке change.Could вы дайте мне знать, что мне не хватает. Спасибо. – Valla
@ Valla, возможно, вы пропустили макрос Q_OBJECT в объявлении класса MainWindow. Добавьте его, запустите qmake и сделайте еще раз. Или перестройте проект с помощью QtCreator, если вы его используете. Не забудьте добавить 'connect (tabWidget, SIGNAL (currentChanged (int)), это, SLOT (onTabChanged (int))),' в конструктор вашего главного окна. – vahancho