Russian Qt Forum
Ноябрь 25, 2024, 20:44
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Неактивная кнопка
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Неактивная кнопка (Прочитано 6577 раз)
Дмитрий
Гость
Неактивная кнопка
«
:
Январь 11, 2015, 11:46 »
Собрал простенький проект,смысл его таков:ввожу текст нажимаю ок и текст всплывает в новом сообщении.Всё хорошо только где то упустил ошибку и кнопка "ок" неактивна,нельзя на неё нажать.Как это исправить?
«
Последнее редактирование: Январь 11, 2015, 19:39 от Дмитрий
»
Записан
__Heaven__
Джедай : наставник для всех
Offline
Сообщений: 2130
Re: Неактивная кнопка
«
Ответ #1 :
Январь 11, 2015, 12:34 »
свойство Enabled
Записан
Дмитрий
Гость
Re: Неактивная кнопка
«
Ответ #2 :
Январь 11, 2015, 12:36 »
По конкретнее пожалуйста
Записан
Mikhail
Программист
Offline
Сообщений: 587
Re: Неактивная кнопка
«
Ответ #3 :
Январь 11, 2015, 13:47 »
Если форма сделана в дизайнере (QtCreator) установить для кнопки свойство Enabled в true.
Если форма в тексте - для кнопки выполнить btn->setEnabled(true). btn - указатель на твою кнопку.
А вообще то желательно читать документацию - Assistant
Записан
Дмитрий
Гость
Re: Неактивная кнопка
«
Ответ #4 :
Январь 11, 2015, 14:01 »
Вариант со свойствами Enable сработал.
Создано две кнопки:
ok = new QPushButton ("Ок");
ok->setDefault(false);
ok->setEnabled(true);
close = new QPushButton("&Выход");
После того как поменял местами false и true кнопка "ок" заработала но,при использовании в программке функции "верхний регистр" программа работает,при использовании функции "инверсия текста" тоже работает,однако при использовании обеих функций программа виснет.
http://imgur.com/a/ZqigD
Записан
Bepec
Гость
Re: Неактивная кнопка
«
Ответ #5 :
Январь 11, 2015, 14:51 »
А давайте прекратим играть в экстрасенсов? ошибка у вас в коде и несчастный QPushButton ни в чем не виноват...
Записан
Дмитрий
Гость
Re: Неактивная кнопка
«
Ответ #6 :
Январь 11, 2015, 17:03 »
Да что вы.Ну с кнопкой согласен.Пушбатон может и не виноват тогда где проблема?Делал программку по видеоуроку.Пересмотрел,у парня работает у меня не.Мож поможете?
Записан
Bepec
Гость
Re: Неактивная кнопка
«
Ответ #7 :
Январь 11, 2015, 17:11 »
Я ж не экстрасенс по вашему комментарию код прозревать...
Вот когда вы код покажете нам, причем весь, мы вам поможем.
PS могу и платную консультацию с объяснением дать, если хотите
Записан
Дмитрий
Гость
Re: Неактивная кнопка
«
Ответ #8 :
Январь 11, 2015, 17:32 »
Вот собственно код проекта.
#include "mywindow.h"
MyWindow::MyWindow(QWidget *parent) : QDialog(parent)
{
lbl = new QLabel("&Текст");
line = new QLineEdit(this);
lbl->setBuddy(line);
cb1 = new QCheckBox("Верхний регистр");
cb2 = new QCheckBox("Инверсия");
ok = new QPushButton ("Ок");
ok->setDefault(true);
ok->setEnabled(false);
close = new QPushButton("&Выход");
QBoxLayout *layout = new QHBoxLayout;
layout->addWidget(lbl);
layout->addWidget(line);
QVBoxLayout *right = new QVBoxLayout;
right->addLayout(layout);
right->addWidget(cb1);
right->addWidget(cb2);
QVBoxLayout *left = new QVBoxLayout;
left->addWidget(ok);
left->addWidget(close);
left->addStretch();
QHBoxLayout *main1 = new QHBoxLayout;
main1->addLayout(right);
main1->addLayout(left);
connect(line,SIGNAL(textChanged(QString)),this,SLOT(TextChanged(Qstring)));
connect(close,SIGNAL(clicked()),this,SLOT(close()));
connect(ok,SIGNAL(clicked()),this,SLOT(OkClicked()));
setLayout(main1);
setWindowTitle("Message");
}
void MyWindow::TextChanged(QString str)
{
ok->setEnabled(!str.isEmpty());
}
void MyWindow::OkClicked()
{
if(cb1->isChecked() && cb2->isChecked())
emit RegistrAndInverse(line->text());
else
if((!cb1->isChecked()) && (!cb2->isChecked()))
emit Simple(line->text());
else
if(cb1->isChecked())
emit Register(line->text());
else
if(cb2->isChecked())
emit Invers(line->text());
}
«
Последнее редактирование: Январь 11, 2015, 17:41 от Дмитрий
»
Записан
Bepec
Гость
Re: Неактивная кнопка
«
Ответ #9 :
Январь 11, 2015, 18:01 »
А давайте я вам скажу, что это не весь код. Нет h файла, неизвестно что за сигналы и что в них происходит, так что вы привели огрызок
Записан
Дмитрий
Гость
Re: Неактивная кнопка
«
Ответ #10 :
Январь 11, 2015, 18:07 »
А ну это можно,пожалуйста(h файл):
#ifndef MYWINDOW
#define MYWINDOW
#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QCheckBox>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QMessageBox>
class MyWindow : public QDialog
{
Q_OBJECT
public:
MyWindow(QWidget *parent=0);
private:
QLabel *lbl;
QLineEdit *line;
QCheckBox *cb1;
QCheckBox *cb2;
QPushButton *ok;
QPushButton *close;
private slots:
void OkClicked();
void TextChanged(QString str);
signals:
void Register(QString str);
void Invers(QString str);
void Simple(QString str);
void RegistrAndInverse(QString str);
};
class str : public QObject
{
Q_OBJECT
public slots:
void Simple(QString str)
{
QMessageBox msg;
msg.setText(str);
msg.exec();
}
void Inversia(QString str)
{
QString result = str;
for(int i=str.size()-1,j=0; i >= 0; i--,j++)
{
result[j] = str
;
}
QMessageBox msg;
msg.setText(result);
msg.exec();
}
void Register(QString str)
{
str = str.toUpper();
QMessageBox msg;
msg.setText(str);
msg.exec();
}
void All(QString str)
{
str = str.toUpper();
QString result = str;
for(int i=str.size()-1,j=0; i >= 0; i--,i++)
{
result[j] = str
;
}
QMessageBox msg;
msg.setText(result);
msg.exec();
}
};
#endif // MYWINDOW
Файл main.cpp:
#include <QApplication>
#include "MyWindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWindow *window = new MyWindow(NULL);
window->show();
str *n = new str;
QObject::connect(window,SIGNAL(Simple(QString)),n,SLOT(Simple(QString)));
QObject::connect(window,SIGNAL(Invers(QString)),n,SLOT(Inversia(QString)));
QObject::connect(window,SIGNAL(Register(QString)),n,SLOT(Register(QString)));
QObject::connect(window,SIGNAL(RegistrAndInverse(QString)),n,SLOT(All(QString)));
return a.exec();
}
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Неактивная кнопка
«
Ответ #11 :
Январь 11, 2015, 18:51 »
for(int i=str.size()-1,j=0; i >= 0;
i--,i++
) - отсюда и зацикливание. и вместо того, чтобы тщательно проверить свой код, ты создаешь тему на форуме.
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Дмитрий
Гость
Re: Неактивная кнопка
«
Ответ #12 :
Январь 11, 2015, 19:38 »
Каюсь....Спасибо большое всем.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...