« first day (1680 days earlier)      last day (2104 days later) » 

11:00 PM
isso. tá funcionando. mas o nome do arquivo é sempre o mesmo. queria fazer o nome mudar
estou usando QFile cal_file("current.tex"); dentro da funcao do submit
 
@Sigur seria melhor vc postar o código num pastebin pra vermos o melhor caminho. Uma possibilidade seria ao construir o form vc passar uma referencia do tabcontrol
 
quer o codigo do form.cpp?
 
Aliás, pq vc usa tabwidget se o widget é o mesmo em todos?
@Sigur dos 2, pode colar "em seguida", só ponha um separador no meio
 
hum, nao sei. minha ideia era fazer varias tabs e dados diferentes e depois salvar tudo em files diferentes
 
@Sigur o QTabBar é parecido, só que ele é só a parte das "orelhas"
o QTabWidget ja é mais completo, pra vc por widgets de verdade em cada página.
Não que isso mude seu problema, só pra vc saber que existem os 2
Vc poderia simplificar muito se pusesse o tabbar em cima do próprio form
já que é um controle dele.
 
11:03 PM
vou colar o codigo no pastbin, mas é enorme hein
 
@Sigur só ponha a parte dos forms por enquanto.
(e a que chama eles no main(), claro)
 
ah tá. pera ai entao
@Bacco, complicado, tem tanta coisa, nem sei se vai dar certo....
https://pastebin.com/s7CTVn8k
 
Eu não entendi pq vc cria um mainwindow quando o botão é clicado
 
qual botao?
 
void CalForm::on_pushButton_submit_clicked()
{
    MainWindow *mainwindow = new MainWindow();

    qDebug() << "submit clicked";
 
11:11 PM
ah, criei pois estava tentando acessar informacoes do tabwidget, que pertence a classe main
isso foi o q estava pensando....
 
@Sigur mas ai vc ta criando uma nova, não faz muito sentido
 
foi mais ou menos isso que fiz quando, no mainwindow, precisava acessar o botao clear no form. criei parecido.
 
@Sigur e outra coisa, vc ta criando 1 form novo pra cada aba
 
pode esquecer essa tentativa entao
 
nao é o mesmo form
Tá criando vários forms iguais.
Apesar de válido, talvez não seja a melhor solução.
 
11:13 PM
bem, isso nao entendo..é mais tecnico. sou leigo. com certeza meu programa é um frankstein
 
No seu caso poderia simplificar muito separando as duas coisas, o calendário em cima, o form de inserção em baixo valendo pra todos.
O fato é que
 
o form.ui deve ser usado em cada tab.
 
vc pode fazer algo do tipo "passar o nome do tab" em cada instancia do form
assim cada form vai ter um nome separado.
Note que o .ui é só um "modelo"
quando vc cria ele no código, é uma instância nova baseada no modelo.
 
quando adicionar a tab, com nomes diferentes, passo esse nome tb pro form? isso é no mainwindow.cpp certo
 
Se chamar new Form 4 vezes, tá criando 4 forms
@Sigur então, tem 2 caminhos mais evidentes. Um é remendar seu código pra fazer funcionar
 
11:15 PM
se o objetivo é que a pessoa preencha 4 vezes em 4 tabs, nao precisa disso?
 
mas eu iria por outro lado: repensar no modelo
como eu faria (nao é certo nem errado, vai do objetivo)
 
se puder me dar uma ajuda, agradeço. pra quem sabe, deve ser coisa de minutos.
 
Eu criaria as tabs em cima, e o form separado embaixo
Ao dar submit embaixo, simplesmente pegaria o tab ativo e jogaria nele a informação (ou no arquivo dele, que seja)
 
Isso eh tenso, :P
0
Q: Solution to "mysql_select_db() expects parameter 2 to be resource" in PHP

Luca Magnani$conexion = mysqli_connect($server, $db_user, $db_pass) or die ("Problemas contectando a la base de datos"); mysql_select_db($db_base, $conexion) or die ("Problemas en la seleccion de datos"); $consulta = "insert into cliente(Nombre, Apellido, Usuario, contrasena, nacimiento, sexo, direccion, tel...

 
Ou seja, o mesmo form.
 
11:17 PM
entao, mudaria a funcao on_pushButton_add_cal_clicked
 
You are mixing MYSQLI with MYSQL functions. You need "mysqli_query", not "mysql_query" since you used "mysqli_connect" — Bacco 1 min ago
@Sigur mudaria a ordem das chamadas mesmo, no main() eu instanciaria o QTabWidget e o form, e ao instanciar o form passaria o QTabWidget como referência para que vc pudesse acessar a aba usada
 
@Bacco não seria melhor usar o PDO?
 
@gato não vejo razão. PDO é inferior em tudo. A única coisa que o PDO serve é pra conectar DBs diferentes do MySQL que não tem lib própria decente. Mas como o caso dele é MySQL, melhor o MySQLi mesmo
 
@Bacco ele eh mais lento p processar os dados?
 
@Bacco, então, tem como fazer isso mas sem precisar desenhar o conteudo form.ui junto com o main.ui?
 
11:21 PM
@gato PDO é mais lento que MySQLi, e se fizer query com binding, mais lerdo ainda (é substituição de string, nao aproveita os prepared statements).
@Sigur sim, claro.
 
levei um tempao pra fazer os 2 layouts.
queria agora so fazer a coisa acontecer.
 
@Bacco neste caso, dependendo do SGBD eh melhor usar os drivers próprios ao invés do PDO
 
@gato nativo é sempre mais eficiente né. A única exceção seria uma lib que vai ser usada em vários DBs, ai o PDO serve como camada de abstração.
 
@Bacco mas internamente o PDO não usaria um driver nativo? Seria algo genérico?
@Bacco hum entendo
 
@gato até usa, mas faz algumas operações antes pra "igualar" o funcionamento. E o binding é simulado.
@Sigur tou relendo seu código e pensando aqui.
 
11:24 PM
@Bacco, se eu fizer agora um projeto simples, só pra testar sua ideia, tem tempo livre pra me ajudar a fazer funcionar? depois eu continuo no meu codigo.
 
@Sigur na verdade eu fico aqui respondendo e intercalando com outra coisa que eu já tou fazendo aqui e queimando miolos kkkk
 
@Bacco, pois é.... estou o dia todo fazendo isso. e tem o TEX.SE que não desgrudo... rs
 
@Sigur nessa parte aqui:
CalForm::CalForm(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::CalForm)
{
    ui->setupUi(this);
}
 
sim
 
Você poderia passar uma referência ao tabwidget
 
11:27 PM
poderia ser mais específico? rs
 
ou simplesmente, talvez dê certo vc simplesmente pegar o this parentWidget()
na hora do submit, que teoricamente é o tabwidget
 
com isso?
this->parentWidget();
 
QTabWidget tabwidget = this->parentWidget();
e pra obter o nome da aba algo assim:
tabwidget->tabText( tabwidget->currentIndex() );
 
calform.cpp:34: error: conversion from ‘QWidget*’ to non-scalar type ‘QTabWidget’ requested
QTabWidget tabwidget = this->parentWidget();
^
 
Vamos ver pq ele nao tá passando como parent, peralá
 
11:34 PM
tenho todo o tempo do mundo.... rs
estou de férias
 
Talvez na linha
CalForm *calform = new CalForm
precise de algo tipo CalForm *calform = new CalForm( ui->tabWidget )
 
na funcao on_pushButton_add_cal_clicked ??
no main?
 
Ah, achei aqui onde vc tá inserindo o calform no widget, peralá
não é parent mesmo
ui->tabWidget->addTab(calform, QString("Cal %0").arg(i));
vc cria o calform "solto" e ai poe ele como widget do tab, e dá o respectivo nome.
 
isso peguei da internet, depois de horas procurando
 
@Sigur bom, o nome da tab vai ser renomeado durante o uso?
 
11:39 PM
não. quero apenas que ao adicionar, siga o padrao... Cal 1, Cal 2, etc....
talvez com underline, Cal_1
 
@Sigur ok, podemos tentar isso então:
void MainWindow::on_pushButton_add_cal_clicked()
{
    CalForm *calform = new CalForm;

    int i = ui->tabWidget->count()+1;
    calform->setObjectName(QString("Cal %0").arg(i));  ///////////// <----------- usando pra botar um nome no calform
    ui->tabWidget->addTab(calform, QString("Cal %0").arg(i));
    ui->tabWidget->setCurrentIndex(ui->tabWidget->count()-1);
perai, é ruim editar aqui
 
copiei seu perfil do SE. https://pt.stackoverflow.com/users/70/bacco
se não se importar, vou colocar nos agradecimentos.
 
Aí no clique do calform vc pega o nome com
this->objectName()
 
QTabWidget tabwidget= this->objectName();
calform.cpp:34: error: conversion from ‘QString’ to non-scalar type ‘QTabWidget’ requested
QTabWidget tabwidget= this->objectName();
^
 
não, nao precisa disso
esquece essa parte anterior
 
11:43 PM
ok
 
no seu original vc só muda 2 coisas:
void MainWindow::on_pushButton_add_cal_clicked()
{
    CalForm *calform = new CalForm;

    int i = ui->tabWidget->count()+1;
    calform->setObjectName(QString("Cal %0").arg(i));  ///////////// <----------- usando pra botar um nome no calform
    ui->tabWidget->addTab(calform, QString("Cal %0").arg(i));
    ui->tabWidget->setCurrentIndex(ui->tabWidget->count()-1);
 
esse ja mudei
 
Acrescenta essa linha só, no seu original
Isso.
Ai lá no calform
 
e no submit?
 
void CalForm::on_pushButton_submit_clicked()
{
    MainWindow *mainwindow = new MainWindow();

    qDebug() << this->objectName();
só pra ver se tá pegando o nome certo.
 
11:45 PM
entao volta a usar o mainwindow?
 
@Sigur tira a linha do mainwindow, é que veio junto na cópia.
uma coisa independe da outra
(ou deixe ela como estava, só pra nao confundir)
 
deu certo.
está imprimindo o nome da tab, e ao criar outra, imprime a outra, etc....
 
a idéia aí, pra não te complicar com escopo de variáveis foi usar um lugar do próprio QObject da Qt pra dar um "nome" no seu form
Não é a solução mais linda do universo, mas tá aproveitando o que já tem pronto na Qt
 
pois é. tem muita coisa que ja fiz. comecar do zero, acho duro....
entao, posso salvar isso numa string e usar no file pra salvar o form?
 
@Sigur dependendo daonde é nem precisa salvar, já é uma string o retorno.
 
11:48 PM
opa
 
já pode usar direto no nome do arquivo. Mas agora eu acho que vc consegue se virar.
 
vou testar
 
Agora, eu acho que vc pode, depois de resolver isso e se animar
pegar outro dia e refazer, nem que seja como exercicio
mas do zero mesmo essa parte dos forms.
 
@Bacco, perfeito.....
QFile cal_file(this->objectName());
 
Bom, boa diversão aí, eu vou tocar o meu barco aí agora. Espero que isso resolva seu problema imediato.
 
11:51 PM
agora vou trabalhar em um botao do tipo, save all. pra salvar todas as tabs abertas, sem precisar fazer uma por uma
 
Depois vc pode dar uma revisada no seu código e simplificar outras partes, principalmente evitando criar novas variáveis pra coisas ja existentes na UI
por exemplo, this->controle->faztalcoisa
 
pois é, sou bem iniciante.
 
em vez de Qalgumacoisa variavel = ui->abcde
variavel->chamatalmetodo
vc pode simplificar em alguns casos.
 
certo. a ideia do this é usar o objeto atual?
 
isso.
é a instância.
A classe define o "modelo", o new cria uma nova instância desse modelo.
 
11:53 PM
legal. o que me pega eh esse lance de classe. nao tenho nem ideia. no inicio tentei fazer tudo em uma classe, mas o .ui ficou tao poluido
 
@Sigur pense assim:
QPushButton é uma classe de botão, com métodos definidos.
Não é um botão, é uma coleção de funcionalidades.
O botão passa a existir quando vc faz um
deletar = new QPushButton
agora vc tem um botão.
 
certo
 
quando vc faz um enviar = new QPushButton, é uma nova instância
agora vc tem 2 botoes independentes.
(regidos pela mesma funcionalidade, que é a classe original QPushButton)
 
entao, se eu crio uma classe num novo widget, com ui separado. eu crio depois uma instancia dele no main e uso as coisas dele?
 
quando dentro de um método vc usa o "this"
vc está se referindo àquela instância especifica.
para o delete, o this é o botão de deletar
já, para algo da variável (objeto) enviar, o this é o botão de enviar.,
 
11:56 PM
mas se eu crio os dois botoes, enviar e deletar, o this vai ser de qual?
o this tem que vir dentro de algo maior entao.
 
@Sigur justamente, essa é a graça da coisa.
vc vai usar o this quando se refere à mesma instância
quando precisar de uma específica nao usa o this.
 
acho que saquei.
 
exemplo, vc tem um campo de texto de pesquisa
vc nao vai conectar o "returnPressed()" em "this->animateClick"
mas sim em "botaoDeBuscar->animateClick()"
 
tenho usado ui-> um monte de vezes
 
pq nao está falando "dele mesmo" (o campo texto)
e sim de um botão especifico de busca
 
11:58 PM
saquei.
 
o this só presta como atalho pra vc se referir ao objeto que deu origem aquele evento/método
no nosso caso, foi usado exatamente pra saber qual tab era, através do nome.
 

« first day (1680 days earlier)      last day (2104 days later) »