Formun açılmasını engellemek?!

20 views
Skip to first unread message

Dr. Mucibirahman İLBUĞA

unread,
Jun 4, 2018, 10:10:23 AM6/4/18
to Qt Türkiye

Merhabalar,

Aşağdaki komut ile yeni bir UI formu açıyorum;

mUrunAgacAl = new UrunAgacAl(this);

mUrunAgacAl->showMaximized();

Ancak bu açılacak formun başına kullanıcı kontrolü yapmak istiyorum. Yetkisi olmadığında form açılmasın! Setup kısımına bir şeyler yapmaya çalıştım ama formun açılmasını engelleyemedim!

Kontrolü,

ui->setupUi(this);

kısmından sonra veya önce yapsam bile açılış engellenmiyor! En başarılısı form açılıyor ama boş geliyor! Yani yine açılıyor?!... :( Nasıl engelleyebilirim?...

Sorgulama da şöyle:

if(!girisYetki){

               QMessageBox::warning(this,"Yetkisiz Giriş", "Bu Sayfaya erişim yetkiniz bulunmamaktadır!");
               StokListesi::destroy(true,true);
               //this->close();

    

    
              this->destroy(true,true);
               this->close();

    
               //StokListesi::~StokListesi();
               //return;
           }

Tüm seçenekleri denedim ama beyhude?!... :(


-- 
Kolay gelsin,
Mucip:)

slymnturkoglu

unread,
Jun 4, 2018, 10:40:56 AM6/4/18
to qttu...@googlegroups.com

Formu olusturmadan kontrol etseniz olmaz mi
Formun constructorinda yapmak pek dogru dehil gibi



Samsung Galaxy akıllı telefonumdan gönderildi.

-------- Orijinal mesaj --------
Başlangıç tarihi: "Dr. Mucibirahman İLBUĞA" <mucip....@gmail.com>
Tarih: 04.06.2018 17:10 (GMT+03:00)
Alıcı: Qt Türkiye <qttu...@googlegroups.com>
Konu: [qtturkiye] Formun açılmasını engellemek?!

Dr. Mucibirahman İLBUĞA

unread,
Jun 4, 2018, 10:42:11 AM6/4/18
to qttu...@googlegroups.com
Merhabalar,

Düşünmedim değil ama bu defa formu açarken o formun ne olduğu bilgisi
falan gerekecek! Zor bir işlme yani. Takibi zor olur. Formun kendisi bu
kontrolü yapsa en kolayı!... :(

Kolay gelsin,
Mucip:)

4.06.2018 17:40 tarihinde slymnturkoglu yazdı:

süleyman türkoğlu

unread,
Jun 4, 2018, 10:56:23 AM6/4/18
to qttu...@googlegroups.com
Singleton patterni gibi birşey işini görebilir. Formun constructorını private yapın.
Form sınıfı içinde static CreateForm fonksiyonu oluşturun.



Form myForm = CreateForm();

///Form sınıfı;

static public Form CreateForm(...)
{
    if (izinvar)
        return new Form();
    else 
         return null;
}

private Form Form()
{
....
}

işallah alatabilmişimdir.:)

4 Haziran 2018 17:42 tarihinde Dr. Mucibirahman İLBUĞA <mucip....@gmail.com> yazdı:
--
--
Qt Türkiye E-Posta Listesi
Yazılanlardan sadece yazan sorumludur...
Mesaj göndermek için qttu...@googlegroups.com
Listeden çıkmak için qtturkiye-unsubscribe@googlegroups.com
Liste hakkında daha fazla bilgi için http://groups.google.com/group/qtturkiye
Qt Türkiye: http://qt.comu.edu.tr
--- Bu e-postayı Google Grupları'ndaki "Qt Türkiye" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için qtturkiye+unsubscribe@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için, https://groups.google.com/d/optout adresiniz ziyaret edin.

Dr. Mucibirahman İLBUĞA

unread,
Jun 4, 2018, 3:51:29 PM6/4/18
to qttu...@googlegroups.com
Merhabalar,

Mecburen öyle yapacağım artık. Yapıyı biraz değiştirmem gerekecek!... :(

Kolay gelsin,
Mucip:)

4.06.2018 17:40 tarihinde slymnturkoglu yazdı:
>

Mehmet Aydemir

unread,
Jun 5, 2018, 4:52:27 AM6/5/18
to qttu...@googlegroups.com
Eğer birden fazla formunuz varsa ve başka yetkilendirme gereksinimleri de duyacaksaniz. Araya bir tane singleton page controller yazabilirsiniz. Sinyal ve slotlar yardımıyla formları yöneten katman ile haberlesebilirsiniz. Yetki kontrolünü de burada yapabilirsiniz. Eğer yetkisiz bir giriş durumu varsa errorOccurred gibi bir sinyal emit edip ekrana hata mesajı bastirabilirsiniz. 

4 Haz 2018 Pzt 22:51 tarihinde Dr. Mucibirahman İLBUĞA <mucip....@gmail.com> şunu yazdı:
--
--
Qt Türkiye E-Posta Listesi
Yazılanlardan sadece yazan sorumludur...
Mesaj göndermek için qttu...@googlegroups.com
Listeden çıkmak için qtturkiye-...@googlegroups.com

Liste hakkında daha fazla bilgi için
http://groups.google.com/group/qtturkiye
Qt Türkiye: http://qt.comu.edu.tr
---
Bu e-postayı Google Grupları'ndaki "Qt Türkiye" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için qtturkiye+...@googlegroups.com adresine e-posta gönderin.

Dr. Mucibirahman İLBUĞA

unread,
Jun 5, 2018, 10:22:19 AM6/5/18
to qttu...@googlegroups.com
Merhabalar,

İlk defa duydum. İnceleyeceğim...

Kolay gelsin,
Mucip:)

5.06.2018 11:52 tarihinde Mehmet Aydemir yazdı:

Mehmet Aydemir

unread,
Jun 5, 2018, 10:43:18 AM6/5/18
to qttu...@googlegroups.com
Şöyle bir diagram ile açıklamaya çalıştım.

Hatta passwordRequired(); diye bir sinyal ile mainwindow'un ekrana şifre kutusunu getirmesini sağlayabilirsin. 

--
--
Qt Türkiye E-Posta Listesi
Yazılanlardan sadece yazan sorumludur...
Mesaj göndermek için qttu...@googlegroups.com

Liste hakkında daha fazla bilgi için http://groups.google.com/group/qtturkiye
Qt Türkiye: http://qt.comu.edu.tr
--- Bu e-postayı Google Grupları'ndaki "Qt Türkiye" adlı gruba abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için qtturkiye+unsubscribe@googlegroups.com adresine e-posta gönderin.

Daha fazla seçenek için, https://groups.google.com/d/optout adresiniz ziyaret edin.



--
Mehmet AYDEMİR
pagecontroller.jpg

Dursun Çakır

unread,
Jun 5, 2018, 11:03:03 AM6/5/18
to qttu...@googlegroups.com
Basitçe şöyle yapabilirsin;
>
> Formun olduğu class içerisinde bir tane static method oluştur. O
> formun olduğu classı bu method create etsin. Bu method içinde önce
> yetki kontrolleri vs yap. yetki onayı alındıktan sonra class'ı create
> et. Dolayısıyla şu şekilde bir kullanım olur.
>
>
> Form1.CallForm();
>
> static void CallForm() {
>
> if (yetkiVarmi) {
>
>    Form1 frm = new Form1();
>
> }
>
> }
>
--

sanal bilgi kösesi

unread,
Nov 11, 2020, 12:21:06 AM11/11/20
to Qt Türkiye
başka pencere açmak istiyorsan başka  istediğin pencereyi ilkin diğer pencerenin header dosyasında #include<> et bağlan arkasından bool değer döndüren resimde ki gibi fonksiyon oluştur. ve sonra istersen benim gibi yapmayabilirsin(RESİM1)(Resimde ki pointerları bilerek koydum resme bakanlara kolaylık olsun diye)

sonra oluşturduğum bool değer döndüren fonksiyonun içini yazdım ve onu button click ile çağırdım
FONKSİYON YORUMU:
2 parametre var.
MainWindow *WindowName --->pencere ismi
bool WindowSwitch ----> if için de ki kolaylığı sağlamak yoksa ikinci seçenek WindowSwitch==true && WindowName->isActiveWindow()==true  ama ben işimi böyle uzatmayı seviyorum
if(WindowName->isActiveWindow()==WindowSwitch) --->eğer isActiveWindow() true ise yerine paramatre koydum
delete WindowName; -->bunu inigilizce forumlarda tavsiye ediyorlar madem false olunca window açılacak o zaman gereksiz durmasın delete olsun
return WindowName->isActiveWindow();  ----> eğer koşulu sağlanırsa bu değer dönecek
ve else
WindowName->show(); ile hedef pencere açılıyor.
this->hide();  -->diğer pencere kapanıyor.
return WindowName->isActiveWindow(); --> else koşulu sağlanırsa ki sağlandı. bu değer dönecek
void MainWindow::on_OpenButton_clicked() { OpenWindowFunction(Win2,false); } --->OpenButton click olunca fonksiyon çalışmakta
EVET ÖZÜR DİLERİM ÇOK YAZDIM AMA PARMAKLARIM YORULDU. :) VE BİR DE QT DE ÇOK İYİ DEĞİLİM SADECE ORTA DÜZEYİM HABERİN OLSUN ÖYLE delete WindowName filan bilmem
4 Haziran 2018 Pazartesi tarihinde saat 17:40:56 UTC+3 itibarıyla slymnt...@gmail.com şunları yazdı:

Dr. Mucibirahman İLBUĞA

unread,
Nov 11, 2020, 3:48:51 AM11/11/20
to qttu...@googlegroups.com

Merhabalar,

2,5 yıl geçmiş ama yine de teşekkürler.:)

Ben şöyle çözmüştüm. MainWindow'da yeni formu çağırırken yetki kontrolü yapıyorum. Bu şekilde formu yaratıp silmek zorunda kalmıyorum. Bir arkadaş önermişti sanırım. Ona uymuştum.


void MainWindow::on_actionTalep2_Giris_triggered()

{
    if(baglanti::girisYetki(83))
    {
        mTalep2Giris = new Talep2Giris("Alış", this);
        mTalep2Giris->setAttribute(Qt::WA_DeleteOnClose);
        connect(mTalep2Giris,SIGNAL(destroyed(QObject*)),this , SLOT(talep2GirisKapat()));
        mTalep2Giris->showMaximized();
    }else{
        QMessageBox::warning(this,"İstek Reddedildi!", "Bu ekrana giriş yetkiniz bulunmamaktadır!");
    }

    
}


Hatta kazara pointeri de unutursunuz demişlerdi. O yüzden form kapandığında pointeri komple sıfırlayan bir de rutin eklemiştim.


void MainWindow::talep2GirisKapat()

{
    mTalep2Giris = nullptr;
}





Kolay gelsin,
Mucip:)
11.11.2020 01:32 tarihinde sanal bilgi kösesi yazdı:
--
--
Qt Türkiye E-Posta Listesi
Yazılanlardan sadece yazan sorumludur...
Mesaj göndermek için qttu...@googlegroups.com
Listeden çıkmak için qtturkiye-...@googlegroups.com

Liste hakkında daha fazla bilgi için
http://groups.google.com/group/qtturkiye
Qt Türkiye: http://qt.comu.edu.tr
---
Bu iletiyi Google Grupları'ndaki "Qt Türkiye" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için qtturkiye+...@googlegroups.com adresine e-posta gönderin.
Bu tartışmayı web'de görüntülemek için https://groups.google.com/d/msgid/qtturkiye/3242a6b6-6aea-4f02-a5c7-9f38ef0834cbn%40googlegroups.com adresini ziyaret edin.
Reply all
Reply to author
Forward
0 new messages